如何自签发HTTPS证书

本文最后更新于2016年12月17日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

=Start=

缘由:

在测试给Nginx新增模块的时候想试试HTTPS的配置方式,但是手上又没有多的域名了,原本想着是用IP申请一个免费的Let’s Encrypt的HTTPS证书的,照着「Let’s Encrypt,免费好用的 HTTPS 证书」操作了之后才发现——它已经不支持给IP配置HTTPS证书了;没办法,只好先自签发一个HTTPS证书做测试。

之前做过几次,但没有记录下来,所以现在想配置又需要去网上找,试了几个之后终于找到一个靠谱的文章「为nginx配置https并自签名证书」,照着一步一步执行了一遍,测试OK。所以在此记录一下,方便以后参考。

正文:

参考解答:
1、制作CA证书:

制作CA的私钥(ca.key):

制作一个不需要密码的CA私钥(用处参见「给博客添加STARTSSL的免费SSL证书」):

制作CA的证书(ca.crt):

2、制作网站(或IP)的证书并用CA签名认证

在这里,假设网站的域名为 blog.ixyzero.com

制作 blog.ixyzero.com 的证书私钥:

制作一个不需要密码的 blog.ixyzero.com 的证书私钥:

生成签名请求:

在common name中填入网站域名,如 blog.ixyzero.com 即可生成该站点的证书,同时也可以使用泛域名如 *.ixyzero.com 来生成所有二级域名可用的网站证书。

用CA进行签名:

其中,policy参数允许签名的CA和网站证书可以有不同的国家、地名等信息,days参数则是签名时限。

如果在执行签名命令时,出现「 unable to open '/etc/pki/CA/index.txt' 」的错误,可以通过修改 /etc/pki/tls/openssl.cnf 中 「dir = ./CA」,然后:

再重新执行签名命令。

最后,把 ca.crt 的内容粘贴到 blog.ixyzero.com.crt 后面。这个比较重要!因为不这样做,可能会有某些浏览器不支持。

好了,现在 HTTPS 需要的网站私钥 blog.ixyzero.com.key 和 网站证书 blog.ixyzero.com.crt 都准备完毕了。之后就可以开始配置Nginx了。

参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/3075.html

《如何自签发HTTPS证书》上有11条评论

  1. RSA 私钥文件的格式
    https://www.cryptosys.net/pki/rsakeyformats.html
    http://fileformats.archiveteam.org/wiki/PEM_encoded_RSA_private_key

    Differences between “BEGIN RSA PRIVATE KEY” and “BEGIN PRIVATE KEY”
    https://stackoverflow.com/questions/20065304/differences-between-begin-rsa-private-key-and-begin-private-key

    The unencrypted PKCS#8 encoded data starts and ends with the tags:
    -----BEGIN PRIVATE KEY-----
    BASE64 ENCODED DATA
    -----END PRIVATE KEY-----

    RSA Private Key file (PKCS#1)
    The RSA private key PEM file is specific for RSA keys.It starts and ends with the tags:
    -----BEGIN RSA PRIVATE KEY-----
    BASE64 ENCODED DATA
    -----END RSA PRIVATE KEY-----

    What is the SSL private key file format?
    https://crypto.stackexchange.com/questions/21102/what-is-the-ssl-private-key-file-format

发表评论

电子邮件地址不会被公开。 必填项已用*标注