Laziness, Impatience and Hubris.

Nginx配置HTTPS加密

预计 9 分钟

# 建立保存目录
mkdir /etc/cert
cd /etc/cert
# 生成1024位加密的服务器私钥
openssl genrsa -out decode.li.key 1024
# 制作CSR证书申请文件
openssl req -new -key decode.li.key -out decode.li.csr

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:CN
State or Province Name (full name) [Berkshire]:Chongqing
Locality Name (eg, city) [Newbury]:Chongqing
Organization Name (eg, company) [My Company Ltd]:Vinoach
Organizational Unit Name (eg, section) []:Vinoach
Common Name (eg, your name or your server's hostname) []:www.vinoach.com

Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request

A challenge password []:
An optional company name []:
# 如果这里填写完整的话生成的csr文件是可以用来给证书机构生成商业证书的

如果自己生成未验证证书的话

openssl x509 -req -days 3650 -in vinoach.com.csr -signkey vinoach.key -out vinoach.crt

现在我们自己的crt证书就生成了

下面是nginx下网页实现ssl加密的配置参考

# HTTPS server
server {
    listen 443;
    server_name www.example.com;(你要加密的域名)

    ssl on;
    ssl_certificate /etc/cert/example.crt;(相应的文件位置)
    ssl_certificate_key /etc/cert/example.com.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;
    index index.html index.htm index.php;
    root /home/wwwroot/www.example.com;(服务器上相应的目录)

    location ~ .*.(php|php5)?$
    {
        try_files $uri =404;
        fastcgi_pass unix:/tmp/php-cgi.sock;
        fastcgi_index index.php;
        include fcgi.conf;
    }

    location /status {
        stub_status on;
        access_log off;
    }

    location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires 30d;
    }

    location ~ .*.(js|css)?$
    {
        expires 12h;
    }

    access_log /home/wwwlogs/access.log access;
}

配置结束上传以后用nginx -t 测试下配置无误 就reload一下nginx服务 检查443端口是否在监听

nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful (显示表示配置文件没有错误)

service nginx reload (重新加载nginx服务)
netstat -lan | grep 443 (查看443端口)
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN (有看到这一行 就表示HTTPS已经在工作了)

现在使用https访问你的域名就可以了