首页 > 解决方案 > 无法验证证书 - 不包含任何 IP SAN

问题描述

我正在尝试启用 ssl 连接并验证在 docker 中运行的 postgres 的证书。我找到了这个博客:postgres using ssl 我按照这里的一些说明进行操作,并且能够通过 psql 命令进行连接。但是,当我尝试从另一个应用程序连接时,它会引发以下错误:

错误:x509:无法验证证书,因为它不包含任何 IP SAN

我尝试将 SAN 添加到客户端证书:

openssl req -new -key client.key -subj "/CN=test" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=IP: docker的ip地址" )) -out client.csr

并使用以下命令进行验证:

openssl req -in client.csr -text -noout

但是,我仍然看到与上述相同的问题“

不包含 IP SAN”

有人能指出这里可能有什么问题吗?谢谢!

更新:下面是我用来生成服务器和客户端密钥和证书的全套命令:

openssl genrsa -des3 -out root.key 4096

openssl rsa -in root.key -out root.key

openssl req -new -x509 -days 365 -subj "/CN=postgres" -key root.key -out root.crt

openssl genrsa -des3 -out server.key 4096

openssl rsa -in server.key -out server.key

openssl req -new -key server.key -subj "/CN=" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=IP:ip address")) -文本输出 server.csr

openssl x509 -req -in server.csr -text -days 365 -CA root.crt -CAkey root.key -CAcreateserial -out server.crt

openssl genrsa -out client.key 4096

openssl rsa -in client.key -out client.key

openssl req -new -key client.key -subj "/CN=test" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=IP:ip address")) -out client.csr

openssl x509 -req -in client.csr -CA root.crt -CAkey root.key -CAcreateserial -days 365 -text -out client.crt

标签: dockersslopenssl

解决方案


推荐阅读