知识&技术&梦想 知识&技术&梦想

在Windows下用Nginx配置https服务器

准备工作: 系统环境: win10 需要软件: OpenSSL, Nginx for windows

一、安装OpenSSL

下载地址: http://slproweb.com/products/Win32OpenSSL.html (请根据你的系统来选择是使用 32位系统 or 64位系统) 下载完成后, 可以把程序安装在: C:\OpenSSL-Win64 (这里你可以调整, 如果调整一下也要跟着调整即可.)

配置环境变量

变量名:OPENSSL_HOME 变量值:C:\OpenSSL-Win64 并在Path变量结尾添加一条: %OPENSSL_HOME%\bin OpenSSL配置完毕.

二、安装Nginx

下载Nginx 请到: Nginx官网下载Nginx, 我是传送带点我去. 我这里下载的是: nginx/Windows-1.12.1 这个版本。 安装Nginx 这里的版本都是绿色的版本, 把下载下来的压缩包解压. 直接拷贝到系统的目录中, 并Nginx放在目录: c:\Nginx 启动Nginx 如果不做其他的配置, 可以直接进入c:\Nginx 找到nginx.exe. 双击运行nginx.exe 就可以启用服务器了. 访问Nginx 默认的情况下, 访问http://localhot 就可以看到Nginx的默认页了. Nginx配置完成.

三、生成证书

小前提 在c:\Nginx目录中, 创建 ssl 文件夹, 用于接下里创建的证书. 打开控制台执行命令:
cd C:\Nginx\ssl
1. 创建私钥 进入到C:\Nginx\ssl 目录后, 在命令行中执行命令:
openssl genrsa -des3 -out cert.key 1024    
# cert文件名是自己随便起即可
输入密码后,再次重复输入确认密码。记住此密码,后面会用到。 3. 创建csr证书 继续在命令行中执行命令:
openssl req -new -key cert.key -out cert.csr
#其中cert.key文件为刚才生成的文件
执行上述命令后,需要输入一系列的信息。输入的信息中最重要的为Common Name,这里输入的域名即为我们要使用https访问的域名 ,比如我输入的是localhost。其它的内容随便填即可。 以上步骤完成后,ssl文件夹内出现两个文件:cert.csr 和 cert.key 4. 去除密码。 在加载SSL支持的Nginx并使用上述私钥时除去必须的口令,否则会在启动nginx的时候需要输入密码。 复制cert.key并重命名为cert.key.org 接下来准备使用. 在命令行中执行如下命令以去除口令:
openssl rsa -in cert.key.org -out cert.key
然后输入密码,这个密码就是上文中在创建私钥的时候输入的密码。 5. 生成crt证书 在命令行中执行此命令:
openssl x509 -req -days 365 -in cert.csr -signkey cert.key -out cert.crt
到现在, 证书生成完毕。 在ssl目录中, 一共生成4个文件.
cert.crt
cert.csr
cert.key
cert.key.org
下面在配置https服务器的时候,我们需要用到的是其中的cert.crt和cert.key这两个文件。

四、修改Nginx的nginx.conf配置文件

进入到 C:\Nginx\conf 目录下. (不要使用自带的记事本), 然后找一个记事本打开 nginx.conf 文件 找到HTTPS server配置的那一段(即包含有listen 443 ssl配置那一段)。 我们发现这段代码被注释掉了. 我们把该段代码前面的#号注释去掉。 然后分别修改其中的ssl_certificate和ssl_certificate_key配置项为刚才所生成的 cert.crt 和 cert.key 这两个文件的路径. 并配置server_name为localhost。 修改后的该段配置如下:
server {
    listen      443 ssl;
    server_name  localhost;

    ssl_certificate      C:\Nginx\ssl\cert.crt;  # 这个是证书的crt文件所在目录
    ssl_certificate_key  C:\Nginx\ssl\cert.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;  # 这个是指定首页的文件名
    }
}
五、Nginx的常用操作 在继续后面的内容之前,先简单介绍下Windows命令行中操作Nginx的几个常用的语句:
start nginx              # 启动Nginx
nginx.exe -s stop        # 快速停止Nginx,可能并不保存相关信息
nginx.exe -s quit        # 完整有序的停止Nginx,并保存相关信息
nginx.exe -s reload      # 重新载入Nginx,当配置信息修改,需要重新载入这些配置时使用此命令。
nginx.exe -s reopen      # 重新打开日志文件
nginx -v                 # 查看Nginx版本
因为修改了配置文件,所以需要退出控制台,并重新打开一个控制台。执行如下命令:
cd c:\nginx
nginx.exe -s quit
start nginx
即退出Nginx,然后再重新启动它。这时候,在浏览器访问 https://localhost 就可以看到默认的访问页面了. 需要注意的是: 你可能在浏览器上看到“您的连接不是私密连接”的提示,单击页面中的“高级”,并接着单击“继续前往xxxxx(不安全)”,就可以看到Nginx的欢迎界面了。 说明https服务器已经配置成功了。
大纲