2012-02-08 4 views
2

ruby에서 RestClient를 사용하여 https 페이지를 열 때 p12 파일과 암호를 사용하려고합니다.SSL_connect 받기 ... .p12 파일 루비를 사용할 때 sslv3 경고 핸드 셰이크 오류가 발생했습니다.

P12 = OpenSSL을 :: PKCS12.new (File.read ("# {RAILS_ROOT} /file.p12을"), "패스")

RESP = 위해 RESTClient :: Resource.new (URL

, : SSLv3에 경고 핸드 셰이크 실패

:

SSL_connect = 1 개의 errno = 0 상태 = SSLv3에 완료 읽기를 반환 ssl_client_key => p12.key는) 내가 얻을보다

갔지

(RestClient는 필수 사항이 아닙니다. 다른 것은 무엇이든 할 것입니다)

무엇이 누락 되었습니까?

답변

1

openssl 패키지를 설치하고 루비를 다시 설치해야합니다. 확실하지 중요한 것을 : 당신은 당신의 nssdb 위치로 file.p12 파일을 가져와야합니다

rvm pkg install openssl 
rvm <(if exist) re>install <RUBY_VERSION> --with-openssl-dir=$rvm_path/usr 
+0

에 --tlsv1.0 추가해야합니다. $ rvm_path 아래에 ssl 디렉토리가 없었기 때문에 그것을 완벽하게 작동 시켰습니다. 두 번째 부분을 할 필요가 없었습니다. 이미 SSL로 구축 된 루비가 있었지만 RVM 자체에서 인증서가 누락되었습니다. 감사! –

0

:

rmdir $rvm_path/usr/ssl/certs 
ln -s /etc/ssl/certs $rvm_path/usr/ssl 

Necesery.

mkdir /root/nssdb 
pk12util -i /path-to/your/file.p12 -d /root/nssdb 
certutil -L -d /root/nssdb/ 
export SSL_DIR = /root/nssdb 

curl -X POST -H "Content-Type: text/xml" --data "#{xml}" --cert cert:password "https://yoururl.com" -v -k 
chmod -R 777 /root/nssdb 
chown -R user /root/nssdb 

이 curl 호출을 루비 클라이언트에 포함 시키십시오. 효과가있을 것입니다.

참고 : 다른 SSL 버전을 사용하는 경우는 첫 번째 단계는 나를 위해 그것을 처리했다 컬 명령

관련 문제