创建自用CA根证书并颁发自签名的泛域名证书
创建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证书 - 博客园