一、背景
研究了好久如何创建一个可供https和docker仓库使用的内网证书,最终参考这篇文章( https://www.mogublog.net/post/2443.html )和自己的摸索搞定了。用于网站的证书其实很好建,一条命令既可:“openssl req -new -x509 -days 3560 -nodes -out web.crt -keyout web.key ”。问题是,这种方式创建的证书有几个问题:
1、不能用于docker的registry仓库服务,docker会认为证书不合法,拉取、推送镜像时都会报错。
2、每生成一个证书,每个客户端浏览器或软件就需要信任一次,或者在客户端操作系统导入一次。特别是访问自建的centos系统的yum仓库(https),需要修改各个客户端的yum配置或导入到系统证书目录。(因此需要自建CA证书,客户端导入CA证书,这样用CA生成的所有证书在客户端都能信任)
3、浏览器即便信任了证书,还是会出现“不安全连接”的提示。
因此需要创建CA证书,然后用CA证书生成一个规范的域名证书,才能满足上述所有需要。创建证书可以使用前面那篇文章的脚本。我的创建、部署过程如下:
二、创建证书
1、CA证书创建脚本createCA.sh
#!/bin/bash
mkdir CA
cd CA
openssl genrsa -out ca.key 4096
openssl req -new -x509 -days 36500 -key ca.key -out ca.crt -subj "/C=CN/ST=SC/L=CD/O=COMPANY/OU=ServerOperation/CN=neiwang.yuming/emailAddress=someone@neiwang.yuming"
echo "1" > serial
# Useage: sh createCA.sh
我举例使用了内网自建域名“neiwang.yuming”,只要你的自建dns能解析,域名可以使用自定义域名。CA证书过期时间设置为100年!