我人生中的第一次遇到证书问题并加以解决,还是在大约3年前,那时还专门写了一篇文章《解决Chrome更新到63后.dev/.app后缀域名强制HTTPS的问题》。当时是因为本地开发环境一直都是用的.dev后缀结尾的域名,一直都是以http://www.test.dev的方式进行本地web开发。那天浏览器突然提示访问不安全的网站,此处黑人问号?? Chrome强制.dev后缀的域名都得走https,无奈之下,不想更换后缀的我走上了自签发https证书的道路,但当时直接使用了开源工具,并没有深入研究。
日月如梭,今时今日的我已经不再是那个年少的小孩!日常工作中免不了与SSL/TLS这玩意儿打交道,除了访问web用https外,只要与建立加密连接有关的统统都少不了证书和秘钥。这次需要自建CA服务器并签发下级证书以达到加密访问的目的,那么这次的笔记将会成为以后温习的主要文献了。(哈哈哈)
搭建CA服务器
Server:Ubuntu 16.04.6 TLS
Core:1
RAM:1GB
提前安装好openssl,版本:OpenSSL 1.0.2g 1 Mar 2016。
使用默认配置/usr/lib/ssl/openssl.cnf:
1 | # 主要配置如下 |
根据配置中的内容,需要提前创建好目录和文件:
1 | $ tree demoCA |
生成CA证书
1 | # 生成跟证书和秘钥 |
下级(节点)证书签发
私钥:
1
2# 生成私钥
openssl genrsa -out server.key 2048生成证书请求文件CSR:
1
2# 生成csr文件
openssl req -new -key server.key -out server.csr利用CA对CSR签发证书:
1
2# 签发证书
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -days 3650查看签发的证书:
1
2# 查看证书
openssl x509 -text -in server.crt -noout
证书的吊销
查看要吊销的证书序列号和Subject:
1
2
3
4
5# server.crt为证书文件
openssl x509 -in server.crt -noout -serial -subject
#====以下是内容====#
serial=01
subject= /C=CN/ST=World/O=Home/OU=Home Bedroom/CN=mybed对比证书索引文件中的信息:
1
2
3cat demoCA/index.txt
#====以下是内容====#
V 300715070118Z 01 unknown /C=CN/ST=World/O=Home/OU=Home Bedroom/CN=mybedCA吊销该证书:
1
2
3
4
5openssl ca -revoke ./demoCA/newcerts/01.pem
#====以下是内容====#
Using configuration from /usr/lib/ssl/openssl.cnf
Revoking Certificate 01.
Data Base Updated更新吊销列表:
1
2
3
4#第一次吊销需要先生成编号
echo 00 > ./demoCA/crlnumber
# 更新列表
openssl ca -gencrl -out ./demoCA/crl/ca.crl查看CRL文件内容:
1
openssl crl -in ./demoCA/crl/ca.crl -noout -text
参考文献