[Java] SSL 접속 시 에러 (No subject alternative names matching IP address 192.168.0.10 found)
MqttException (0) - javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names matching IP address 192.168.70.43 found at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:38) at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:736) at java.lang.Thread.run(Thread.java:748) Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names matching IP address 192.168.70.43 found at sun.security.ssl.Alerts.getSSLException(Alerts.java:198) at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1967) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:331) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:325) at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1688) at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:226) at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1082) at sun.security.ssl.Handshaker.process_record(Handshaker.java:1010) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1079) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1388) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1416) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1400) at org.eclipse.paho.client.mqttv3.internal.SSLNetworkModule.start(SSLNetworkModule.java:159) at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:722) ... 1 more Caused by: java.security.cert.CertificateException: No subject alternative names matching IP address 192.168.70.43 found at sun.security.util.HostnameChecker.matchIP(HostnameChecker.java:168) at sun.security.util.HostnameChecker.match(HostnameChecker.java:94) at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:462) at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:428) at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:209) at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:132) at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1670) ... 10 more
MQTT로 접속을 시도 했지만 TCP 적용이 아닌 SSL로 접속을 시도했다. SSL로 접속을 하면 IP 주소가 아닌 URL 주소가 필요하다. 즉 인증서에 정의된 CN(도메인 명)이 응용 프로그램에서 실행중인 도메인과 일치하지 않기 때문에 발생된 에러의 이유다.
에러를 해결하는 방법은 인증서에 기재된 도메인 명을 붙이면 정상적으로 SSL 접속이 이뤄진다.
SSL은 Secure Socket Layor라는 약자로 보안 소켓 레이어다. 443 포트를 사용하며 https:// 를 사용한다. 웹 개발을 하다보면 https로 사용하는 웹 사이트를 볼 수 있다. SSL은 Netscape사에서 웹 서버와 웹 브라우저간의 보안을 위해 만들어졌다.
HTTP로 통신을 한다면 패킷에 데이터가 노출이 된다. 노출된 데이터를 이용해 서비스 중이 시스템을 해킹하거나 사용자의 권한을 획득하여 나쁜 짓에 악용이 된다. 그래서 웹 통신 중에 데이터가 노출되지 않도록 공개키/개인키 대칭키를 이용해 전송되는 데이터가 암호화를 시킨다.
즉 SSL 인증서는 SSL 기반해서 사용자의 웹브라우저와 인터넷 사이트의 웹서버간 암호화 통신을 가능하게 하는 제 3의 신뢰기간이 인증한 인증서를 말한다. 이 인증서를 통해 사용자가 웹 페이지를 https:// 접속 후 서버의 서비스를 이용하기 위해 입력된 내용이 암호화되어서 서버에 전송된다.
[Flutter] VlcPlayer가 Build시 앱 팅김현상 (0) | 2021.07.09 |
---|---|
Flutter로 image.network not load 에러 (0) | 2021.07.08 |
[Flutter] setState() or markNeedsBuild() called during build. (0) | 2021.06.21 |
댓글 영역