我正在尝试使用两种SSL身份验证与第三方API集成。他们提供的文档用于 JAVA ,而我正在使用 NodeJS 。我对此并不陌生,在这里真的很了解。在文档中,提到要生成一个自签名证书,并使用该证书的私钥和来自它们的公共证书来创建PKCS 12文件并使用它来调用API。
下面是文档摘录
创建自签名证书
keytool -genkey -keyalg RSA -alias <aliasName>-keystore selfsigned.jks -validity <days> -keysize 2048
将JKS导入密钥存储区
KeyDB可以是任何格式的PFX,JKS或P12。从>密钥库中列出证书,转到Java库的bin目录,它在证书列表中应具有Private-> Cert条目。
Keytool -list -v -keystore <Keystore Name>
如果不存在KeyDB,请使用通过openSSL提供的私钥和公共证书来创建Keydb。
- 通过密钥创建P12
openssl pkcs12 -export -in mycert.crt -inkey <mykey.key> -out mycert.p12 -name tomcat -CAfile <myCA.crt> -caname root –chain
- 从P12创建JKS
keytool -v -importkeystore -srckeystore <key.p12> -srcstoretype PKCS12 -destkeystore <key.jks> -deststoretype JKS
- 要验证:KeyDB可以是任何格式的PFX,JKS或P12。列出密钥库中的证书,转到Java库的bin目录,它在证书列表中应该有一个Private-Cert条目。
Keytool -list -v -keystore <Keystore Name>
我在创建PKCS 12文件时遇到问题。我通过以下提到的命令使用openssl(由git提供)创建了自签名证书
创建请求和私钥
openssl req -new -newkey rsa:2048 -nodes -keyout privatekey.key -out certificatereq.cer
使用请求和密钥创建证书
openssl x509 -req -days 365 -in certificatereq.cer -signkey privatekey.key -out selfsigned.crt
创建证书后,我通过以下命令使用它创建了PKCS 12文件,如上述文档中所述
openssl pkcs12 -export -in selfsigned.crt -inkey privatekey.key -out outpkcs12file.p12 -name myname -CAfile thirdpartypublic.crt -caname mycaname -chain
但收到错误错误的自签名证书获取链。我也尝试在系统中安装自签名证书,并得到相同的错误。如果我删除了-chain(不确定它做什么,但是发现很少的命令没有-chain ),则终端中将没有输出。第三方的证书是CA签名的。