nginx添加ssl 之 添加本地证书

说明:
只是为了本地测试nginx添加ssl功能,因此就本地生成了密钥,证书,但这样证书是不被信任的。
具体效果见下图:

 

实现:
1.使用如下命令并根据提示输入信息,生成证书

openssl genrsa -des3 -out localhost.key 1024 //创建自身密钥
openssl req -new -key localhost.key -out localhost.csr  //通过密钥生成相应CSR申请文件
openssl rsa -in localhost.key -out localhost_nopass.key //生成浏览器浏览网页时不需要输入密码的密钥
openssl x509 -req -days 365 -in localhost.csr -signkey localhost.key -out localhost.crt
//生成证书

 

2.在nginx的server配置中添加如下配置:

server {
    listen 443;
    server_name www.nobody.com nobody.com;
    ssl on;
    ssl_certificate /usr/local/nginx/conf/localhost.crt;
    ssl_certificate_key /usr/local/nginx/conf/localhost_nopass.key;
}

注:如果HTTP和HTTPS虚拟主机的功能是一致的,可以配置一个虚拟主机,既处理HTTP请求,又处理HTTPS请求。 配置的方法是删除ssl on的指令,并在*:443端口添加参数ssl:

server {
    listen              80;
    listen              443 ssl;
    server_name www.nobody.com nobody.com;
    ssl_certificate     /usr/local/nginx/conf/localhost.crt;
    ssl_certificate_key /usr/local/nginx/conf/localhost_nopass.key;
    ...
}

在0.8.21版本以前,只有添加了default参数的监听端口才能添加ssl参数:listen 443 default ssl;

现在生成的证书是不受信任的,如果需要受信任的证书,需要证书颁发机构颁发(需要用钱解决)。
免费的证书颁发机构:http://www.startssl.com/ 较低版本的ie浏览器可能不支持。

发表评论

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