Openssl 生成根证书并签证域名

1. 生成ext文件

echo -e "[v3_req]\n"\
"authorityKeyIdentifier=keyid,issuer\n"\
"basicConstraints=CA:FALSE\n"\
"keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment\n"\
"subjectAltName = @alt_names\n"\
"\n"\
"[alt_names]" > v3.ext

2. 设定域名证书

echo DNS.1 = www.xxx.com >> v3.ext

请把上面 www.xxx.com 改成自己的需要生成服务器证书的域名

3. 生成根证书(ca)的RSA 密钥文件

openssl genrsa -out ca_private.key

4. 生成ca的证书请求文件

openssl req -new -key ca_private.key -out ca.req \
    -subj "/C=CN/ST=Guangdong/L=Shenzhen/O=testo/OU=testg/CN=testca"

-subj 参数中填写的是证书信息

  • C 是国家编号, 2位数
  • ST 是省份
  • L 是城市名
  • O 是组织名
  • OU 是组名
  • CN 是证书拥有者名称

5. 生成ca根证书(自己给自己签证)

openssl x509 -req -days 3650 -sha256 -extensions v3_ca \
    -signkey ca_private.key -in ca.req -out ca.cer

-days 是根证书的有效天数
-sha256 是采用sha256离散算法,谷歌浏览器不在支持sha1算法的安全提示,也即是说如果用sha1作为参数,谷歌浏览器可能显示为不安全

6. 生成服务器网站的SSL密钥

openssl genrsa -out server_private.key

7. 生成服务器网站的证书请求文件

openssl req -new -key server_private.key -out server.req \
    -subj "/C=CN/ST=Guangdong/L=Shenzhen/O=demo/OU=demog/CN=xxx.com"

subj 的内容与#4一样,这里是网站使用者的证书信息

8.使用ca根证书生成服务器证书

openssl x509 -req -days 3650 -sha256 -extfile v3.ext -extensions v3_req \
    -CA ca.cer -CAkey ca_private.key -CAserial ca.srl -CAcreateserial \
    -in server.req -out server.cer

最后生成的文件如下:

  • v3.ext 用于生成服务器证书所需要的配置文件, 包含证书绑定的域名
  • ca_private.key ca根证书的密钥
  • ca.req 生成ca根证书的请求文件
  • ca.cer ca根证书
  • ca.srl 在使用ca根证书签证网站证书时自动生成的序列文件
  • server_private.key 服务器ssl证书的密钥
  • server.req 服务器证书生成的请求文件
  • server.cer ca根证书签证的服务器网站的ssl证书

部署到nginx中只需要 server_private.keyserver.cer

根证书 ca.cer 可以安装到本地操作系统中对网站的证书进行验证

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容