docker - 无法验证证书 - 不包含任何 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
解决方案
推荐阅读
- android - 隐式 Intent 的安全性如何?
- javascript - 超过 1 个系列的 Highchart 显示未显示
- python - Python3.7:多行字符串之间的正则表达式?
- corda - Corda:在一个流程中创建和使用相同的状态?
- java - 对 assertEquals 的模糊引用
- python - 从 Google Composer (Airflow) 中检索 Kubernetes 的秘密
- android - 没有符合条件的设备进行应用安装。| 安卓 | 奥利奥 8.1.0
- php - 无法使用 Slim 框架将图像保存到数据库和文件夹
- java - 我应该在流中改变对象吗?
- c# - 无法将 lambda 表达式转换为 c# 中的预期委托类型