Mac OS下签发多域名证书

前言

本文介绍如何在Mac OS下方便的利用钥匙串程序制作自签名根证书,以及用它签发支持多个域名与泛域名的HTTPS证书。

制作自签名根证书

/Applications/Utilities里打开“钥匙串访问”这个程序,在菜单中选“钥匙串访问” -> “证书助理” -> “创建证书”。过程如图:

名称可以按自己的喜爱去写。


有效期添长一些,比如3650


这里的信息可写可不写。



勾选“证书签名”与“CRL签名”用来颁发与吊销证书。



这里一定要选“将此证书用作证书颁发机构”。


点击继续直到完成。


创建完成后,双击自签名的证书,将证书设置为始终信任。如图:

导出自签名根证书

之后将自签名的根证书导出,命名为ca.p12,存到随意位置。这里一定要选证书和密钥同时导出来,导出的时候可以不设置密码,但之后要及时删除掉ca.p12,以防信息泄露。

创建多域名配置文件

接下来创建配置文件san.cnf,按照要申请的域名去编辑alt_names配置节,其它配置节不用动。例如要申请 *.example.com example.com localhost的多域名证书,按如下配置。编辑完后与之前导出的ca.p12存到一个目录下。

[ req ]
default_bits       = 2048
distinguished_name = req_distinguished_name
req_extensions     = req_ext
[ req_distinguished_name ]
countryName                 = Country Name (2 letter code)
stateOrProvinceName         = State or Province Name (full name)
localityName               = Locality Name (eg, city)
organizationName           = Organization Name (eg, company)
commonName                 = Common Name (e.g. server FQDN or YOUR name)
[ req_ext ]
subjectAltName = @alt_names
[alt_names]
DNS.1   = *.example.com
DNS.2   = example.com
DNS.3   = localhost

签发多域名证书

然后进到ca.p12san.cnf存放的目录执行下列命令:

openssl pkcs12 -clcerts -nokeys -out ca-cert.pem -in ca.p12  #导出公钥
openssl pkcs12 -nocerts -nodes -out ca-key.pem -in ca.p12 #导出私钥

执行上面两行命令的时候,会提示输入导出ca.p12文件时设下的密码,如果没有设置,直接回车就行。然后继续执行下面的命令签发证书。

openssl req -out user-cert.csr -newkey rsa:2048 -nodes -keyout private.key -config san.cnf #创建多域名证书请求
openssl x509 -req -in user-cert.csr -CAcreateserial -CA ca-cert.pem -CAkey ca-key.pem -out cert.pem -days 500 -sha256 -extfile san.cnf -extensions req_ext #签发证书

执行的过程中提示输入信息,Common Name写成你要申请的主要域名,如:example.comwww.example.com,也可以写成localhost,其余的不知道怎么写的话可以回车跳过。

最后得到的cert.pem为证书,private.key为证书私钥。其它文件都要删除掉。最后将证书和私钥配置到server中,以nginx的为例:

listen  80;
listen  443 ssl;
server_name  example.com;
ssl_certificate      pki/cert.pem;
ssl_certificate_key  pki/private.key;

配置完server后,记得重启服务。用浏览器访问,可以看到最后的效果:

发表评论