Nginx安装配置
- 下载Nginx
下载地址:http://nginx.org/en/download.html
- 安装Nginx
A.Nginx不需要安装,直接将下载的程序解压缩到C盘根目录(视实际情况而定,此处根目录只供参考)。
Nginx解压的目录尽量使用英文路径,且不要有空格,避免不必要的错误,如:C:\nginx |
B.打开命令提示符CMD,进入nginx目录,如:cd C:\nginx\nginx-1.12.2,运行命令: start nginx : 启动nginx。
启动Nginx后,在浏览器中访问http://localhost,可以看到默认的欢迎页
Nginx常用命令如下:
start nginx : 启动nginx
nginx -s reload :修改配置后重新加载生效
nginx -s reopen :重新打开日志文件
nginx -t -c C:\nginx\nginx-1.12.2\conf\nginx.conf 测试nginx配置文件是否正确
nginx -s stop :快速停止nginx
nginx -s quit :完整有序的停止nginx
OpenSLL安装配置
- 获得OpenSLL
Windows环境建议下载编译好的包,直接安装。下载地址: http://slproweb.com/products/Win32OpenSSL.html
- 安装OpenSSL
1、双击Win64OpenSSL-1_1_1a.exe
2、选择安装目录(安装目录建议不要存在空格)
3、选择资源文件存放路径,点击安装完成安装
- 配置OpenSSL
设置环境变量,例如工具安装在C:\OpenSSL-Win64,则将C:\OpenSSL-Win64\bin;复制到Path中
打开命令行程序cmd(以管理员身份运行),进入 Openssl 所在目录,运行以下命令确认是否安装成功
openssl 或直接执行 start C:\OpenSSL-Win64\bin\openssl.exe
- 使用openssl生成证书
创建一个文件夹存放生成的证书,如:“C:/SSLKeys”.打开命令控制台,进入C:/SSLKeys目录
- 生成根级证书
1、创建根证私钥
openssl genrsa -out root-key.key 1024
2、创建根证书请求文件
openssl req -new -out root-req.csr -key root-key.key
3、自签根证书
openssl x509 -req -in root-req.csr -out root-cert.cer -signkey root-key.key -CAcreateserial -days 3650
创建根证书请求时,会让填写信息,其中国家,省市,公司等需要和后面的证书保持一致.后面challenge password的地方直接回车就好。
- 生成服务端证书
1、生成服务端key
openssl genrsa -out server-key.key 1024
2、生成服务端请求文件
openssl req -new -out server-req.csr -key server-key.key
3、生成服务端证书(root证书,rootkey,服务端key,服务端请求文件这4个生成服务端证书)
openssl x509 -req -in server-req.csr -out server-cert.cer -signkey server-key.key -CA root-cert.cer -CAkey root-key.key -CAcreateserial -days 3650
创建根证书请求时,会让填写信息,其中国家,省市,公司等需要跟创建根证书时填写一致。
- 生成客户端证书
1、生成客户端key
openssl genrsa -out client-key.key 1024
2、生成客户端请求文件
openssl req -new -out client-req.csr -key client-key.key
3、生成客户端证书(root证书,rootkey,客户端key,客户端请求文件这4个生成客户端证书)
openssl x509 -req -in client-req.csr -out client-cert.cer -signkey client-key.key -CA root-cert.cer -CAkey root-key.key -CAcreateserial -days 3650
4、生成客户端p12格式根证书(密码设置123456)
openssl pkcs12 -export -clcerts -in client-cert.cer -inkey client-key.key -out client.p12
创建根证书请求时,会让填写信息,其中国家,省市,公司等需要跟创建根证书时填写一致。
- 生成证书
经过上面的操作,我们生成的证书如下:
- 证书的配置
- 服务器Niginx配置
修改Nginx配置文件C:\nginx\nginx-1.12.2\conf\nginx.conf:
在server上方新增:
upstream test{
server 192.168.10.1:8080 weight=2; #服务器A的访问ip和端口
server 192.168.10.2:8080 weight=1; #服务器B的访问ip和端口
}
修改server配置为:
server {
listen 443 ssl;
server_name localhost;
ssl_certificate C:/SSLKeys/nginx/server-cert.cer; #server证书公钥
ssl_certificate_key C:/SSLKeys/nginx/server-key.key; #server私钥
ssl_client_certificate C:/SSLKeys/nginx/root-cert.cer; #根级证书公钥,用于验证各个二级client
ssl_verify_client on; #开启客户端证书验证
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;
proxy_pass http://test;
proxy_redirect default;
}
}
Nginx配置最终如下(下图为nginx.conf修改部分):
port:(注意)SSL认证的端口,修改为443接口,避免浏览器访问时还需要输入端口号。
参考上述启动Nginx的方式启动Nginx,在浏览器中输入
https://ip/index。以下为IE显示效果:
点击继续浏览此网站,则出现400错误,是因为我们客户端证书还没有导入。
- 客户端证书导入
1、双击“client.p12”导入客户端证书(默认会添加到IE浏览器,Firefox需要自己添加你的证书client.p12)
再次使用浏览器访问服务端,浏览器会让我们选择使用的证书。