阿里云 Symantec 免费版 SSL 在Nginx中配置 https站点说明

/ JavaWeb / 933浏览

SSL证书购买

为什么需要SSL证书就不说了(提供接口啊、电商网站啊、微信小程序啊等等太多需要使用),这里直入主题,如果申请免费的SSL证书,阿里云购买地址:点击进入购买地址(是0元购买哈)。

如果地址访问不了,可能是aliyun版本更新导致,那么可以登录aliyun系统,进入云盾,点击右上角按钮,购买证书: alt 然后选择免费版的证书,添加购物车0元购买就可以了。 alt 购买完成后,需要补全(绑定域名)操作,这里可以按照系统提示一步一步完成即可。 alt

Nginx配置https站点

其实证书审核通过后,点击下载证书的页面里,aliyun官方的说明已经比较明白了,但是还是记录一下吧,必定Nginx各个版本的配置也稍有不同。首先下载证书: alt 里面有两个文件,一个.pem后缀的私钥以及一个.key后缀的公钥证书,上传至网站服务器。

然后进入服务器的Nginx安装目录(我的Nginx版本是nginx-1.12.2),打开配置文件,比如我的是 /usr/local/nginx/conf/nginx.conf,找到

    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

默认是注释上了,需要取消注释,修改为自己配置的域名、以及反向代理。有两个位置重点说明一下:

下面是配置用例:


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    upstream apiserver {
        server 127.0.0.1:8080;
    }

    server {
        listen     80;
        server_name  api.xxx.cn;
	
        location / {
            proxy_pass http://apiserver;
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
	return 301 https://$server_name$request_uri;
    }

    # HTTPS server 
    server {
        listen       443 ssl;
        server_name  api.xxx.cn;

        ssl_certificate   cert/cert.pem;
        ssl_certificate_key  cert/cert.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
	    proxy_pass http://apiserver;
            root   html;
            index  index.html index.htm;
        }
    }
}

配置好后,重启Nginx,可以成功使用https访问了。如下图: alt

最后说明一下,如果配置后,访问https还是响应不成功,那可能是服务器的公网IP 443端口没有开放,尝试开放此端口再访问。

alt

配图:巴黎凯旋门