[java] 인식 할 수없는 SSL 메시지, 일반 텍스트 연결? 예외

net에서 https 서버와 통신하기 위해 Java 호환 패키지가 있습니다. 컴파일을 실행하면 다음 예외가 발생합니다.

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
    at com.sun.net.ssl.internal.ssl.InputRecord.handleUnknownRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.InputRecord.read(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source)

클라이언트 컴퓨터와의 연결이 안전하지 않기 때문입니다. 원격 https 서버에 연결하기 위해 로컬 시스템을 구성 할 수있는 방법이 있습니까?



답변

클라이언트 컴퓨터와의 연결이 안전하지 않기 때문입니다.

HTTPS 서버가 아닌 HTTP 서버와 통신하고 있기 때문입니다. 아마도 HTTPS에 올바른 포트 번호를 사용하지 않았을 것입니다.


답변

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?

메일 서버에 접속하고 새 연결을 설정하는 로컬 SMTP 도메인 이름이 있어야하며 아래 프로그래밍에서 SSL 특성을 변경해야합니다.

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection

 props.put("mail.smtp.socketFactory.fallback", "true"); // Should be true


답변

프록시를 통해 POST 요청을 수행하기 전에 회사 방화벽에 로그인하는 것을 잊었을 때 동일한 오류 메시지가 나타납니다.


답변

같은 오류가 발생했습니다. http를 사용하여 https 포트에 액세스했기 때문입니다. http를 https로 변경하면 문제가 해결되었습니다.


답변

Jdevelopr 11.1.1.7 IDE에 내장 된 Java 응용 프로그램에서 동일한 문제가 발생합니다. 프록시 양식 프로젝트 속성 사용을 선택 취소하여 문제를 해결했습니다.

다음에서 찾을 수 있습니다 : 프로젝트 속성-> (왼쪽 창에서) 실행 / 디버그 / 프로필-> 오른쪽 패널에서 클릭 (편집)-> 왼쪽 패널에서 도구 설정-> (프록시 사용) 옵션을 선택 취소하십시오.


답변

나중에 누군가에게 도움이 될 수 있으므로 이것을 답변으로 추가하십시오.

jvm이 IPv4 스택을 사용하여 오류를 해결하도록 강요했습니다. 내 응용 프로그램은 회사 네트워크 내에서 작동했지만 집에서 연결하는 동안 동일한 예외가 발생했습니다. 프록시가 필요하지 않습니다. jvm 인수를 추가했으며
-Djava.net.preferIPv4Stack=true모든 https요청이 정상적으로 작동했습니다.


답변

스프링을 사용하여 로컬을 실행하는 경우 사용을 제안합니다.

@Bean
public AmazonDynamoDB amazonDynamoDB() throws IOException {
    return AmazonDynamoDBClientBuilder.standard()
            .withCredentials(
                    new AWSStaticCredentialsProvider(
                            new BasicAWSCredentials("fake", "credencial")
                    )
            )
            .withClientConfiguration(new ClientConfigurationFactory().getConfig().withProtocol(Protocol.HTTP))
            .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("localhost:8443", "central"))
            .build();
}

단위 테스트를 사용하여 작동합니다.

도움이 되길 바랍니다!