2013-07-19 3 views
2

안녕하세요, 저는 SSL을 통해 로컬로 생성 한 REST 웹 서비스를 말리려고 큰 두통을 겪고 있습니다. "curl : (60) SSL 인증서 문제 : 자체 서명 된 인증서 자세한 내용은 여기를 참조하십시오. http://curl.haxx.se/docs/sslcerts.html curl은 기본적으로 인증 기관 (CA)의 번들 공개 키를 사용하여 SSL 인증서 확인을 수행합니다 CA 인증서) 번들 파일이 적합하지 않은 경우 --acacert 옵션을 사용하여 대체 파일을 지정할 수 있습니다 이 HTTPS 서버가 번들 에 표시된 CA가 서명 한 인증서를 사용하는 경우 인증서 확인 인증서에있는 문제로 인해 실패했을 수 있습니다. 만료되었거나 이름이 일 수 있습니다 (URL의 도메인 이름과 일치하지 않습니다). tu 컬의 인증서 확인이 끝나면 -k (또는 --insecure) 옵션을 사용하십시오. " 여기SSL을 통한 자기 인증서 인증서 웹 서비스

단계 내가

  1. OpenSSL을 개인 인증서와 은 OpenSSL이 -x509을 필수 키 쌍과 내 자신의 CA의 인증서를 만든 다음 - 새로운 -config C : \ X509CA \ openssl.cfg -days 365 -out C : \ X509CA \ 캘리포니아 \ private_ca.pem -keyout C : \ X509CA \의 CA \ private_ca_pk.pem 내 CN :
  2. 이 키 스토어를 생성 RESTfulCustomer 및 mycert.pem 키 도구 -genkey -validity 365 -alias의 myalias -keypass 패스워드 -keystore myKeyStore.jks - 패스워드 패스워드 위와 동일한 CN 사용

  3. 만든 인증서 서명 요청 키 도구 -certreq -alias myalias - 파일 myCert_csr.pem -keypass 하려면 openssl 캘리포니아 -config의 C와 함께 CSR 서명 myKeyStore.jks -storepass 비밀번호

  4. -keystore 비밀번호 : \ X509CA \ openssl.cfg - 일 365 - \ 키 저장소 \ myCert_csr.pem - 아웃 c : \ 경로 \ 키 \ 저장소 \ myCert.pem

  5. PEM 형식으로 변환 - 서명 변환 인증서, CertName.pem을 다음과 같이 PEM 전용 형식으로 변경하십시오. Openssl x509 -in c : \ path \ to \ key_store \ myCert.pem -out c : \ path \ to \

  6. key_store \ myCert.pem -outform PEM

    는 CA 인증서 파일과 certName.pem 사본을 연결된 myCert.pem + C : \ X509CA \의 CA \ new_ca.pem myCert.chain 전체 인증서와
  7. 업데이트 키 스토어를 chain - 다음과 같이 인증서의 전체 인증서 체인을 가져 와서 키 스토어 인 CertName.jks를 업데이트하십시오. keytool -import -file myCert.chain -keypass password -keystore myKeyStore.jks -password password 마침내 파이어 폭스로 가져 왔습니다. 업데이트 된 내 server.xml 아파치 tomacat 7 시작 괜찮아 그리고 난 내 SSL 웹 페이지로 아무 문제없이 이동할 수 있습니다. --inecure를 사용하지 않으면 컬이 작동하지 않습니다. 내 curl 명령 컬 -v --cacert ca.pem https : //로 localhost : 8443/RESTfulCustomer/customers.json

컬 명령은 위의 "컬 나에게 메시지를 제공합니다 : (60) SSL 인증서 문제 : 자체 서명 된 인증서 "

http // localhost에 대한 Curl 명령 실행 : ssl이 비활성화 된 8080/RESTfuCustomer.customers.json이 정상적으로 작동합니다.

ca.pem을 myKeyStore.jks로 가져오고 Apache를 다시 시작했습니다. Environemnt 윈도우 7, 아파치 톰캣 7, 봄 보안 3.1, 컬은 7.30.0 (I386-PC-는 Win32) libcurl에/7.30.0 OpenSSL을/1.0.1c ZLIB/1.2.7

어떤 도움이 정말 감사하겠습니다 감사

+1

가독성을 높이기 위해 질문을 수정하십시오. 대담한 기능을 사용하여 중요한 세부 사항을 강조하거나 질문이 무엇인지 강조하십시오. 이것은 당신에게 fasters 대답을 얻을 것이다. 그 외, SO에 오신 것을 환영합니다! –

답변

-1

그 다음 대답을 참조하십시오 :

는 요약하기 :

% openssl s_client -showcerts -connect example.com:443 </dev/null 2>/dev/null | sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' | grep -m1 -B-1 -- '-----END CERTIFICATE-----' > cert.pem 
% curl --cacert cert.pem https://example.com 

및 타다, 당신은 안전하게 자체 서명 웹 사이트에 연결합니다.

관련 문제