入手这个域名以来一直不知道注册商 Gandi 有免费赠送一年的单域名 SSL 证书,直到今天晚上有人告知才准备申请,打算给签到站加上 SSL.

必要工具:OpenSSL,如果没有的话可以去终端里安装,正常的 Linux/OS X 里都会有的

Windows 下可点击此处下载并把其中的 Openssl.exe 和两个 dll 解压到同一目录,然后在该目录运行命令提示符即可使用下列命令。
注意:下列命令仅适用于申请单域名的数字证书。

有了 OpenSSL 后在 Shell 里输入命令生成 CSR

简化版命令

openssl req -nodes -newkey rsa:2048 -sha256 -keyout server.key -subj "/CN=yoursite.com" -out server.csr

该命令解释:
会创建一个 RSA 的 2048 位私钥并在当前目录保存为 server.key 并生成一个域名为 yoursite.com 的 CSR 并保存为 server.csr.一般这样生成的 CSR 即可用于申请大多数 CA 的数字证书。如果该 CSR 不能申请,需要用到下面的正常命令。
正常命令

openssl req -nodes -newkey rsa:2048 -sha256 -keyout myserver.key -out server.csr

现在只能使用 SHA256 证书,因为 SHA1 证书可能被伪造而出现安全风险,国际上已决定不再签发超过 2017 年的 SHA1 证书,谷歌和微软等巨头也已经淘汰掉 SHA1 证书。
在执行该命令之后会要求填写相关信息(准确说是证书主题的各个字段)
并且生成一个 2048 位的 RSA 私钥


Country Name (2 letter code) [AU]:国家代号, 中国填写CN什么的不用说啦

State or Province Name (full name) [Some-State]:省份名称
Locality Name (eg, city) []:位置名称,比如市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:组织名称
Organizational Unit Name (eg, section) []:组织单位名称
Common Name (e.g. server FQDN or YOUR name) []:你的域名 (注:如果要申请泛域名证书记得填的是 *.你的域名 )
Email Address []:邮件地址

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:密码(可不填,但建议填写)
An optional company name []:公司名称(可不填)


到这里 CSR 的生成已经完成了,接下来就是向CA提交 CSR 了

对于普通的 DV(域名验证) SSL 证书 只需要保证 CN(Common Name) 字段填上你的域名即可。

至于高级的 OV(组织验证),EV(扩展验证)证书都需要向 CA 提交相关资料。

ps:如果需要 example.com 的证书,那么通常签发 www.example.com 的证书的 DNS Name 里会包含根域 example.com,但申请诸如 abcd.example.com 的话就不会包含根域了。

填完上述信息后会在个人文件夹里生成myserver.key 和 server.csr 文件 ,server.csr 里面的内容是提交给证书颁发机构的,而 myserver.key 文件是私钥,放在自己的服务器上的。

需要注意的是,不要把 myserver.key 文件发给别人,一定要自己妥善保存,不要随便乱丢,尽量背下来

如果有英文基础的可以使用包含多项功能和图形界面的 xCA 来管理证书和私钥,如果你觉得使用命令行比较烦人的话。