2012-07-03 36 views
1

我试图使用OpenSSL设置为我的应用程序的HTTPS连接。我正在使用Rails 3.1和ruby 1.9运行一个Neo4j 1.2.2数据库和一个Trinidad 1.3.5 Web服务器。OpenSSL的密钥库代特立尼达

我有一个Thawte试用证书,ca_cert.crt,它们的中间和根证书,ca_intermediate.crt和ca_root.crt,以及我自己的私钥ca_private.pem。什么OpenSSL的命令我需要运行创造一个密钥库,我可以在我的应用程序的trinidad.yaml配置文件指定?

到目前为止,“看起来,最近向右”我尝试过的事情是:

pkcs12 –export –in ca_cert.crt inkey ca_private.pem –out keystore.p12 –name tomcat 

,它给我的错误:

unable to load certificates 
6380:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:.\crypto\as 
n1\tasn_dec.c:1319: 
6380:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:.\ 
crypto\asn1\tasn_dec.c:381:Type=X509_CINF 
6380:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 e 
rror:.\crypto\asn1\tasn_dec.c:751:Field=cert_info, Type=X509 
6380:error:0907400D:PEM routines:PEM_X509_INFO_read_bio:ASN1 lib:.\crypto\pem\pe 
m_info.c:258: 
error in pkcs12 

它看起来对我来说,OpenSSL的不喜欢我在文件的格式,虽然我已经试过几乎所有的.PEM,.CRT,.CER,我能想到的都没有用。关键的扩展组合。我是新来完全使用SSL,所以我希望我只是在做一些愚蠢和它的一个简单的办法......

这是我一直在试图效仿的榜样:https://github.com/trinidad/trinidad/wiki/ssl-end-to-end-example

回答

0

this answer它看来,Thawte的证书格式为PKCS#7,而openssl pkcs12 -export命令expects PEM。 PKCS#7中的证书可以使用之前链接的答案的修改版本的命令进行转换。

$ openssl pkcs7 -in ca_cert.crt -print_certs | openssl x509 -outform PEM > ca_cert.pem 

然后执行您提供的命令,创建PKCS#12密钥库。

$ openssl pkcs12 –export –in ca_cert.pem -inkey ca_private.pem –out keystore.p12 –name tomcat 
+0

太谢谢你了!这正是问题所在。 我必须救我的ca_cert.pem文件ca_cert.p7b,然后用 为“OpenSSL PKCS7 -print_certs -in ca_cert.p7b退房手续ca_cert.pem” 将其转换。一旦它被转换,我正在努力工作的命令非常奇妙! – MrSmiles