一、创建CA

CA全称是CertificateAuthority,意思是证书颁发机构。只有当CA被认为是受信任的颁发机构时,经过该CA颁发出来的证书才属于受信任的证书。否则,认为证书是不受信任的。

为了生成一个自签名的CA,需要先生成CA私钥:

openssl genrsa -des3 -out rootCA.key 4096

执行命令后,需要输入一个密码作为私钥的密码,后续通过该私钥来生成或者签发证书都要用到这个私钥。

生成私钥后,执行以下命令生成证书:

openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt

执行后会进入交互式界面,需要输入CN相关信息。等待根证书生成后,一个CA也就创建完成了,此时要做的是生成用户证书,并使用CA证书对它签名,然后就可以用了。

二、生成用户证书

生成用户证书的私钥:

openssl genrsa -out www.maqian.work.key 2048

生成csr,csr是一个证书签名的请求,后面生成证书需要使用这个csr文件:

openssl req -new -key www.maqian.work.key -out www.maqian.work.csr

这一步也需要输入地区、CN等相关的信息,输入完成后,使用CA证书签发用户证书:

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.keywww.maqian.key.pem就是用户端的私钥和证书。

三、chrome错误

错误码:NET::ERR_CERT_COMMON_NAME_INVALID

错误信息:此服务器无法证实它就是 www.maqian.cn - 它的安全证书没有指定主题备用名称。这可能是因为某项配置有误或某个攻击者拦截了您的连接。

解决方案

新建一个文件ext.ini,写入以下内容:

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]下面填写上所有的域名即可,然后签发证书的时候带上参数:

openssl x509 ... -extfile ext.ini
最后修改:2020 年 10 月 07 日
如果觉得我的文章对你有用,请随意赞赏