自建根证书,中间证书和Server端X.509证书并搭建nginx验证Server端证书有效性
X.509证书的颁发和使用
X.509
证书是用来认证身份的,例如在访问一个HTTPS网站的时候,浏览器会首先下载该网站
的证书,验证是否有效。如果无效,浏览器会提示您的连接不是私密连接
,进一步访问网站有风险。
如果有效则可以直接访问,不会告警。
浏览器怎么验证网站证书是否有效呢?简单说就是看网站证书的颁发机构是不是已经被操作系统信任,即看 颁发机构的身份证书是否已经安装到操作系统里,并被设置为信任。
那么我们接下来做的事情就是在mac系统上验证浏览器的上述行为。
验证步骤,
- 生成根证书,中间证书和Server端证书(即用户证书)
- 本机搭建nginx服务器,并设置Server端证书(!!注意此时未安装根证书到操作系统)
- 浏览器访问https://localhost,出现告警提示
- 把根证书和中间证书安装到操作系统,并设置根证书为永久信任
- 重新访问https://localhost,正常,没有出现告警。
第一步,生成根证书,中间证书和Server端证书
颁发机构通常会有根机构和中间机构,根机构的证书自己签发自己,中间机构的证书由根机构签发,而Server端证书由中间机构签发。本人参考以下三篇文章创建了根证书,中间证书和Server端证书。
不过需要注意的是,Server端证书有效期不要太长,否则即使安装了根证书也会告警。
第二步,本机搭建nginx服务器,并设置Server端证书
mac下安装nginx很简单
1 |
|
然后修改/usr/local/etc/nginx/nginx.conf
文件,在server里添加三行
1 |
|
启动nginx
1 |
|
第三步,浏览器访问https://localhost
显示告警信息
第四步,把根证书和中间证书安装到操作系统,并设置根证书为永久信任
在mac系统下,点击lauchpad,并搜索钥匙串访问
。可以看到登录下安装的证书。
在finder中打开根证书和中间证书,可以添加到登录账号下。
只需要设置根证书为永久信任即可。以为中间证书是由根证书签发的。
以下是已经安装的根证书
以下是已经安装的中间证书
第五步, 重新访问https://localhost
自建根证书,中间证书和Server端X.509证书并搭建nginx验证Server端证书有效性
https://threelambda.com/2020/10/09/x509-ca/