저는 GlassFish 3.x에서 실행되는 앱을 가지고 있습니다. https를 통해 원격 서버와 통신합니다. 내 cacerts 파일에서 서버 인증서를 추가했습니다. 내 keystore.jks에서 원격 서버를 실행하는 회사에서 발행 한 개인 키를 추가했습니다. 글래스 피쉬 2.x에서는 훌륭하게 작동하지만, 원격 서버는 내가 가지고있는 키가 무효하다는 불평을 계속합니다.내 앱에서 사용할 비공개 키를 어떻게 알 수 있습니까?
키 저장소에서 키를 제거하면 동일한 오류가 발생합니다. 심지어 응용 프로그램/컨테이너가 내가 필요로하는 키 알 수 있을까 궁금 저를 가지고 키를,로드 아니라면 그것은이다
내 연결 코드는 다음과 같습니다 : 나는 호스트 및 포트를 설정
public class SSLSocket {
private static Logger logger = LoggerFactory.getLogger(SSLSocket.class);
private ConnectionProperties connectionProperties;
public TuSSLSocket(ConnectionProperties connectionProperties) {
this.connectionProperties = connectionProperties;
}
public SSLSocket getSSLSocket() throws Exception{
SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket socket = (SSLSocket) factory.createSocket(connectionProperties.getHost(), connectionProperties.getPort());
socket.setSoTimeout(90000);
return socket;
}
}
그에 따라 키 스토어에서이 별칭을 찾으십시오. 그래서 ... 앱이 어떤 별칭을 가져야하는지 어떻게 알 수 있습니까?
그냥 "내 keystore.jks에 원격 서버를 실행하는 회사에서 발급 한 개인 키를 추가했습니다"라는 메시지가 표시되지 않습니다. 아무도 자신의 개인 키를 제공하지 않습니다. 가지고있는 것은 공개 키입니다. –
... keytool -list etc ...이 (가) 개인 키라고했습니다. – Preston
다른 곳에서 공급받은 비공개 키인 경우 보안을 즉시 호출해야합니다. 개인 키는 둘 이상의 파티에 알려져 있기 때문에 쓸모가 없습니다. 이는 사용자를 의도 한대로 고유하게 식별하는 데 도움이되지 않으며 결과로 발생하는 트랜잭션은 사용자 측에서 부인할 수 없으므로 원격 서버 회사에게 어떤 수준의 보안도 제공하지 않습니다. 자신의 개인 키와 인증서를 생성하고 CA가 서명 한 인증서를 얻어야합니다. – EJP