自己制作ssl证书:自己签发免费ssl证书

有些时候我们要通过https来加密我们的服务器连接,使服务器更安全,但是ssl证书时是收费的,这个时候我们可以制作自签名证书,因为自签名证书是不被浏览器信任的,所以我们要将这个证书添加到浏览器的可信证书列表我们就能启用ssl访问了,当然,这个只在你的浏览器是被信任的,在其他计算机上是不被信任的,但它们还是启用了加密连接。也就是说在你用ssl访问网站的过程中,任何人都无法截取你的信息,因为连接加密了,而这一过程是不可逆的。

首先说下Linux系统怎么通过openssl命令生成 证书。<!--more-->

第一步执行如下命令生成一个key

openssl genrsa -des3 -out ssl.key 1024

要求你输入这个key文件的密码。下一步就是解密这个key,你得输入上一次你输入的密码。

mv ssl.key xxx.key
openssl rsa -in xxx.key -out ssl.key
rm xxx.key

然后根据这个key文件生成证书请求文件

openssl req -new -key ssl.key -out ssl.csr

以上命令生成时候要填很多东西,一个个看着写吧(可以随便,毕竟这是自己生成的证书)

最后根据这2个文件生成crt证书文件

openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out ssl.crt

生成的时候要写证书有效期,推荐3650哈哈。这个大家随意,最后使用到的文件是key和crt文件。如果需要用pfx可以用以下命令生成

openssl pkcs12 -export -inkey ssl.key -in ssl.crt -out ssl.pfx

在需要使用证书的nginx配置文件的server节点里加入以下配置就可以了。

ssl on;
ssl_certificate /home/ssl.crt;
ssl_certificate_key /home/ssl.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;

如果是Apche就的在Apache目录下的conf文件夹放入key和crt文件,再编辑httpd.conf就可以了。

如果系统是Windows则需下载openssl for windows,安装后,照着linux系统的配置方式就生成证书。