2011-11-02 8 views
0

Axis2 서버와의 HTTPS 연결에 자체 서명 된 인증서를 사용하고 있습니다. 이러한 모든 연결은 정상적으로 작동합니다.자체 서명 된 인증서 사용

내 웹 서비스에 전자 메일을 보내는 부분이 있습니다. 나는 메일을 보내기 위해 GMail을 사용하고있다.

SSL 연결을 사용하여 메일을 보내려고하면 인증서 오류가 발생합니다. 즉, Gmail 인증서가 신뢰할 수 없습니다. 저는 JBoss와 비슷한 문제에 직면했습니다. 한 번 나는이 문제를 해결하기 위해 Gmail 인증서를 다운로드하고 Keytool 유틸리티를 사용하여 키 스토어로 가져 오는 대신 할 수있었습니다. 오랫동안 이것은 효과가있었습니다.

그러나 최근에야 나는 오래된 문제를 다시 시작했습니다. 지난 번 문제를 해결 한 오래된 기법을 사용하려고했지만 이번에는 효과가 없었습니다. (이유는 확실하지 않음)

GMail은 모든 서버에서 신뢰 받아야하는 서명 된 인증서를 JBoss 또는 Axis2로 사용한다고 생각합니다. 문제가 실제로 무엇인지 파악하지 못했습니다. 자체 서명 된 인증서를 사용했기 때문입니까? 서명 된 인증서를 신뢰할 수 있도록 특정 방법으로 생성 할 수 있습니까?

도움 주셔서 감사합니다.

답변

1

SSL 암호화 된 서버/클라이언트 통신을 사용하려면 서버의 키 스토어 및 트러스트 스토어에 & 클라이언트가 필요합니다. 다음은 이들을 만드는 단계입니다. 처음 몇 반복하는 동안

#Creating Server keystore and exporting a certificate 
keytool -genkey -alias serverkeys -keyalg RSA -keystore server.keystore -storepass changeit -keypass changeit -dname "CN=test.com, OU=Test, O=Test, L=London, ST=London, C=UK" 
keytool -export -alias serverkeys -keystore server.keystore -storepass changeit -file server.cer 

#Creating Client keystore and exporting a certificate 
keytool -genkey -alias clientkeys -keyalg RSA -keystore client.keystore -storepass changeit -keypass changeit -dname "CN=test.com, OU=test, O=test, L=London, ST=London, C=UK" 
keytool -export -alias clientkeys -keystore client.keystore -storepass changeit-file client.cer 

#Making a copy of cacerts file. These copies will be used for client/server truststore 
cp /usr/java/jdk1.6.0_14/jre/lib/security/cacerts client.truststore 
cp /usr/java/jdk1.6.0_14/jre/lib/security/cacerts server.truststore 

#Copying server certificate to Client truststore 
keytool -import -trustcacerts -v -keystore client.truststore -storepass changeit -file server.cer 

#Copying Client certificate to Server truststore 
keytool -import -trustcacerts -v -keystore server.truststore -storepass changeit -file client.cer 

나는 cacert를 사용하지만 직접 인증서에서 truststores을 만들고이 너무 잘 작동되지 않았습니다. SSL을 사용하는 다른 서비스에 연결해야 할 때 문제가 발생했으며 서비스에서 서명 된 인증서를 사용하는 경우에도 연결을 설정할 수 없었습니다.

예를 들어 Gmail 저장소에 연결하면 SMTP 서버에서 트러스트 스토어가 생성되지 않습니다. GMail이 서명 된 인증서를 사용한다고해서 GMail 인증서를 신뢰할 수 있는지 여부를 알 수없는 트러스트 스토어를 사용하게되었습니다. 이러한 이유로 우리는 cacerts를 사용하여 트러스트 스토어를 만들었습니다. 그 후 우리는 서명 된 인증서를 사용하는 모든 서비스를 연결할 수있었습니다.

서명되지 않은 인증서가있는 경우이를 구성 요소 트러스트 스토어에 추가해야합니다.

관련 문제