首先说明一点,并不是仅仅配置就可以使用真正的https服务,因为需要向证书颁发机构申请SSL证书

首先生成私钥和csr文件

切换到某个目录,在linux机器上执行以下命令生成私钥

openssl genrsa -out server.key 2048

然后在linux机器上执行以下命令生成csr文件

openssl req -new -key server.key -out certreq.csr

以下标识文字仅供参考,请根据商户自己实际情况进行填写

Country Name: CN                      //您所在国家的ISO标准代号,中国为CN

State or Province Name:beijing       //您单位所在地省/自治区/直辖市

Locality Name:beijing                //您单位所在地的市/县/区

Organization Name: liminghulian                //您单位/机构/企业合法的名称 

Organizational Unit Name: dev         //部门名称 

Common Name: www.liminghulian.com     //通用名,例如:www.liminghulian.com。此项必须与您访问提供SSL服务的服务器时所应用的域名完全匹配。

Email Address:                          //您的邮件地址,不必输入,直接回车跳过

"extra"attributes                        //以下信息不必输入,回车跳过直到命令执行完毕。

执行上面的命令后,在当前目录下即可生成私钥文件server.key和certreq.csr csr文件

将生成的csr文件提交给第三方证书颁发机构申请对应域名的服务器证书。证书申请后,证书颁发机构会提供服务器证书,此处假设服务器证书文件名称为server.pem

将生成的私钥文件server.key和服务器证书server.pem拷贝至服务器指定的目录即可进行HTTPS服务器配置,配置参考如下(nginx1.5之前的版本):

listen 443;
#省略若干配置......
ssl on;    #开启ssl支持

ssl_certificate      /opt/server.pem;    #指定服务器证书路径

ssl_certificate_key  /opt/server.key;    #指定私钥证书路径

ssl_session_timeout  5m;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;     #指定SSL服务器端支持的协议版本

ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;

ssl_prefer_server_ciphers   on;

nginx1.5之后的版本如果还按以上配置会出现如下错误

[warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead (mailhost)

其实很简单,只需要删除ssl on;在listen 443后添加ssl即可,如下配置:

listen 443 ssl;
#省略若干配置......

ssl_certificate      /opt/server.pem;    #指定服务器证书路径

ssl_certificate_key  /opt/server.key;    #指定私钥证书路径

ssl_session_timeout  5m;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;     #指定SSL服务器端支持的协议版本

ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;

ssl_prefer_server_ciphers   on;

做完以上工作后测试nginx配置文件无误后重新载入配置,如果需要配置通过http访问时自动跳转到https 可以在80端口对应的虚拟主机配置中设置

 rewrite ^(.*) https://www.ziransha.shop$1 permanent;