以我的经验,在大多数情况下,验证者对自签名证书很挑剔。
通常,在使用“假”证书时,您应该始终采取额外步骤并创建假 CA 并使用 CA 签署假证书。如果不出意外,这会让您的测试更像是一个真实的场景。
以下是有关如何使用 OpenSSL 执行此操作的简要说明:
- 创建 CA(自签名)
openssl req -x509 -new -out ca.crt -keyout ca.key -days 3650
- 创建服务器密钥和 csr
openssl req -out server.csr -pubkey -new -keyout server.secure.key
- 取下密码
openssl rsa -in server.secure.key -out server.key
- 使用 CA 签署服务器证书
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 1825
- (对于进一步的证书,使用现有的序列号
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAserial ca.srl -out server.crt -days 1825
)
每当您遇到任何SSL(不仅仅是 HTTPS)问题时 - 使用 rawopenssl
进行调试
openssl s_verify -connect <hostname>:<portnumber> <options>
例如
openssl s_verify -connect localhost:443 -CAfile myfakeca.pem
这通常会为您节省很多麻烦来找出与您的代码实际上无关的实际证书的问题。