menu Chancel's blog
rss_feed
Chancel's blog
有善始者实繁,能克终者盖寡。

解决自签证书导致的HTTPS证书警告的方法

作者:Chancel Yang, 创建:2023-07-15, 字数:1286, 已阅:57, 最后更新:2023-07-15

这篇文章更新于 289 天前,文中部分信息可能失效,请自行甄别无效内容。

在开发过程中,如果需要在本地部署开发环境和测试环境时使用HTTPS,通常会选择自签证书来实现。然而,自签证书会导致浏览器显示不友好的HTTPS证书警告,因为浏览器无法确认该证书的安全性,原因是自签证书并不是浏览器内置的CA证书所提供的。

为了避免这个错误,可以通过制作自己的CA证书并将其安装到客户端来解决。

以下是创建自己的CA证书并安装到客户端解决这个问题的实践

首先,创建根CA证书,我们将其命名为ChancelCA

Bash
openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt -subj "/CN=ChancelCA"

接下来,生成HTTPS证书,以chancel.me的泛域名为例,可以填入*.chancel.me作为泛域名:

Bash
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr -subj "/CN=*.chancel.me"

然后,创建一个openssl签发配置文件(signing.conf),内容如下:

INI
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = *.chancel.me

接下来,使用根CA证书签署服务器证书请求:

Bash
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 -sha256 -extfile signing.conf

至此,证书签署完毕,所有文件如下所示:

TEXT
➜ tree
.
├── ca.crt
├── ca.key
├── ca.srl
├── server.crt
├── server.csr
├── server.key
└── signing.conf

server.crtserver.key传输到Nginx服务器上,并在Nginx配置文件中进行如下配置:

TEXT
listen 443 ssl;
ssl_certificate server.crt;
ssl_certificate_key server.key;

...

最后,将根CA证书安装到客户端,然后访问时就不会再提示HTTPS证书自签警告了。


[[replyMessage== null?"发表评论":"发表评论 @ " + replyMessage.m_author]]

account_circle
email
web_asset
textsms

评论列表([[messageResponse.total]])

还没有可以显示的留言...
[[messageItem.m_author]] [[messageItem.m_author]]
[[messageItem.create_time]]
[[getEnviron(messageItem.m_environ)]]
[[subMessage.m_author]] [[subMessage.m_author]] @ [[subMessage.parent_message.m_author]] [[subMessage.parent_message.m_author]]
[[subMessage.create_time]]
[[getEnviron(messageItem.m_environ)]]