创建自用CA根证书并颁发自签名的泛域名证书

Published: Tags: NGINX LINUX

创建CA私钥(如果无需密码保护,去掉-des3参数即可) openssl genrsa -des3 -out FakeCA.key 4096 #用于根据CSR生成签名证书

创建CA公钥(用于导入系统凭据,可以信任自签名证书) openssl req -x509 -new -key FakeCA.key -out FakeCA.pem -days 3650 #按需填写,格式正确即可

笔者填写的参考内容:

Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:GuangDong
Locality Name (eg, city) [Default City]:FoShan
Organization Name (eg, company) [Default Company Ltd]:Fake Company Ltd
Organizational Unit Name (eg, section) []:DevOps Department
Common Name (eg, your name or your server's hostname) []:Fake Security
Email Address []:

创建自签名私钥(可用于Nginx等程序) openssl genrsa -out FakeServer.key 2048 #即Nginx中的ssl_certificate_key参数

创建证书签名请求(用于CA颁发签名证书,注意Common Name域名不能和CA的冲突) openssl req -new -key FakeServer.key -out FakeServer.csr #注意Common Name改成域名,其他默认

$ vi ErrCertCN.txt #解决ERR_CERT_COMMON_NAME_INVALID错误
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName=@SubjectAlternativeName

[SubjectAlternativeName]
DNS.1=*.q.qq.com
DNS.2=q.qq.com

使用CA加密CSR生成签名证书(即Nginx中的ssl_certificate参数) openssl x509 -req -CAkey FakeCA.key -CA FakeCA.pem -in FakeServer.csr -out FakeServer.pem -CAcreateserial -extfile ErrCertCN.txt -days 365

以上内容参考互联网及以下资料: 数字签名是什么 - 阮一峰的日志 如何创建自签名的SSL证书 - 简书 OpenSSL自签发自建CA签发SSL证书 - 博客园