Skip to content
Bing edited this page Sep 1, 2018 · 20 revisions

Windown 下Nginx配置https服务器

  1. 安装OpenSSL
  • step.1 下载安装 Download OpenSSL,安装到C:\openssl-win
  • step.32 配置环境变量 新增变量名OPENSSL_HOME,变量值C:\openssl-win\bin;,打到Path变量,并在Path变量结尾添加一条: %OPENSSL_HOME%
  1. 生成证书
  • step.0 进入目录d:\test_ssl
  • step.1 创建私钥
openssl genrsa -des3 -out server.key 2048

输入密码后,再次重复输入确认密码。记住此密码,后面会用到。(注意:[-des3]指定后,该server.key文件将加密存放,当需要使用该密钥,则需要输入密码方可使用。如需要明文存放该密钥(可用计事本直接打开查看),省略该选项即可。)

  • step.2 创建csr
openssl req -new -key server.key -sha256 -out server.csr
提示出错:Unable to load config info from /usr/local/ssl/openssl.cnf 则在安装目录下找到share\openssl.cnf文件,在cmd中,输入 `set OPENSSL_CONF=C:\openssl-win\share\openssl.cnf` ,重新再输入生成csr证书指令.

注意Common Name <eg.YOUR name> []:localhost,需要与配置的服务器名ServerName一至,否则启动apache或nginx时会报错,其它可随意或不填写

openssl req -text -noout -in server.csr查看csr文件

  • step.3 去除密码
在加载SSL支持的Nginx并使用上述私钥时除去必须的口令,否则会在启动nginx的时候需要输入密码。
复制server.key并重命名为server.key.org。
在命令行中执行如下命令以去除口令:
openssl rsa -in server.key.org -out server.key
然后输入密码,这个密码就是上文中在创建私钥的时候输入的密码。
  • step.4 生成root证书(默认是SHA-1加密的,这里用sha256,Chrome16年后已对SHA-1证书标记为“无效HTTPS”)
openssl x509 -req -days 365 -in server.csr -signkey server.key -sha256 -out server.crt

openssl x509 -text -noout -in ustack.crt 查看crt文件

  • step.5 修改nginx conf
server {
    listen       443 ssl;
    server_name  localhost;

    ssl_certificate      d://test_ssl//server.crt;  # 这个是证书的crt文件所在目录
    ssl_certificate_key  d://test_ssl//server.key;  # 这个是证书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;  # 这个是指定首页的文件名
    }
}

SHA-256证书创建

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout ca.key -out ca.crt

Clone this wiki locally