我想为我的本地网络设置一个 CA。根证书应安装在各种设备(iPhone、Windows PC、MacBook)上。使用服务器证书,我想保护浏览器和 Web 服务器之间的流量(Debian 10.1 上的 nginx 1.17 作为反向代理)。
我使用以下命令创建了根证书:
# key
openssl genrsa -des3 -out rootCA.key 4096
# root-certificate
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt
然后我为特定服务器创建了一个 CSR:
# key
openssl genrsa -out myserver.local.key 2048
# csr
openssl req -new -key myserver.local.key -out myserver.local.csr
最后我用根密钥创建了服务器证书:
openssl x509 -req -in myserver.local.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out myserver.local.crt -days 500 -sha256
在 nginx 网络服务器的配置中我添加了以下条目:
lists 443 ssl;
server_name myserver.local;
ssl_certificate /etc/nginx/certificates/myserver.local/myserver.local.crt;
ssl_certificate_key /etc/nginx/certificates/myserver.local/myserver.local.key;
ssl_dhparam /etc/nginx/dhparams.pem;
我在 iOS(版本 13)设备上安装了根证书,然后在设置(设置 - 通用 - 配置文件)中接受了该证书。
重启服务器后,我仍然收到证书不受信任的提示。不幸的是,iOS 没有提供详细信息,因此我找不到从哪里开始进行故障排除的线索。在装有 Chrome 和 Safari 的 MacOS 上,我也收到错误消息。在这里,我也将根证书导入了钥匙串。
有人知道这里出了什么问题吗?
答案1
您是否创建了扩展验证 (EV) 证书? 它们是包含其他记录的记录CN
(例如:国家、城市)。
我曾经遇到过类似的证书被拒绝错误。
这是因为扩展验证,我们没有在证书中包含扩展,该扩展通常需要 CA 来验证主体的合法身份。
来源,以及解决方法的信息:https://gist.github.com/Soarez/9688998#openssl-ca