一、创建 CA
CA 全称是 CertificateAuthority
,意思是证书颁发机构。只有当 CA 被认为是受信任的颁发机构时,经过该 CA 颁发出来的证书才属于受信任的证书。否则,认为证书是不受信任的。
为了生成一个自签名的 CA,需要先生成 CA 私钥:
1 |
openssl genrsa -des3 -out rootCA.key 4096 |
执行命令后,需要输入一个密码作为私钥的密码,后续通过该私钥来生成或者签发证书都要用到这个私钥。
生成私钥后,执行以下命令生成证书:
1 |
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt |
执行后会进入交互式界面,需要输入 CN
相关信息。等待根证书生成后,一个 CA 也就创建完成了,此时要做的是生成用户证书,并使用 CA 证书对它签名,然后就可以用了。
二、生成用户证书
生成用户证书的私钥:
1 |
openssl genrsa -out www.maqian.work.key 2048 |
生成 csr,csr 是一个证书签名的请求,后面生成证书需要使用这个 csr 文件:
1 |
openssl req -new -key www.maqian.work.key -out www.maqian.work.csr |
这一步也需要输入地区、 CN 等相关的信息,输入完成后,使用 CA 证书签发用户证书:
1 |
openssl x509 -req -in www.maqian.work.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out www.maqian.work.crt -days 500 -sha256 |
此时,得到的 www.maqian.work.key
和 www.maqian.key.pem
就是用户端的私钥和证书。
三、 chrome 错误
错误码:NET::ERR_CERT_COMMON_NAME_INVALID
。
错误信息:此服务器无法证实它就是 www.maqian.cn - 它的安全证书没有指定主题备用名称。这可能是因为某项配置有误或某个攻击者拦截了您的连接。
解决方案
新建一个文件 ext.ini
,写入以下内容:
1 2 3 4 5 6 7 8 9 10 |
basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = *.dyxmq.cn DNS.2 = *.maqian.xin DNS.3 = *.maqian.io DNS.4 = *.maqian.co DNS.5 = *.maqian.cn |
[alt_names]
下面填写上所有的域名即可,然后签发证书的时候带上参数:
1 |
openssl x509 ... -extfile ext.ini |
1F
tql 大佬