单向认证原理参考:安全认证系列-(一)https 单向认证和双向认证原理
一.环境配置
1.Nginx配置参考:linux系列之-Nginx环境搭建配置
2.OpenSSL配置参考:安全认证系列之-(二)环境安装配置
二.证书生成
根证书生成方式参考:安全认证系列之-(三)成为数字认证机构CA
服务端证书生成方式参考:安全认证系列之-(四)生成证书
三.Nginx配置
修改nginx.conf配置文件如下:
server {
listen 8443 ssl;
server_name www.qy-bb.club;
# ssl on;
root /html;
index index.html index.htm;
ssl_certificate /usr/src/openssl/server.crt;
ssl_certificate_key /usr/src/openssl/server.key;
ssl_session_timeout 5m;
ssl_verify_depth 2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://106.12.175.83:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
默认的 listen 80为 listen 8443 ssl;
server_name指向之前生成服务端证书时指向的域名:www.qy-bb.club;
使用 ssl on开启ssl安全认证功能;
ssl_certificate指定服务端公钥地址,如/usr/src/openssl/server.crt;
ssl_certificate_key指定服务端私钥地址,如/usr/src/openssl/server.key;
ssl_session_timeout设置ssl session超时时间5m;
ssl_protocols
指令用于启动特定的加密协议,nginx在1.1.13和1.0.12版本后默认是ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2
,TLSv1.1与TLSv1.2要确保OpenSSL >= 1.0.1 ,SSLv3 现在还有很多地方在用但有不少被攻击的漏洞。
ssl_ciphers
选择加密套件,不同的浏览器所支持的套件(和顺序)可能会不同。这里指定的是OpenSSL库能够识别的写法,你可以通过 openssl -v cipher 'RC4:HIGH:!aNULL:!MD5'
(后面是你所指定的套件加密算法) 来看所支持算法。
ssl_prefer_server_ciphers on
设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件。
根路径我指向的是我Linux服务器上面启动的Tomcat8服务,具体的Tomcat8怎么启动不做拓展。
启动Nginx
./nginx -c /usr/src/nginx-1.16.1/conf/nginx.conf
访问Edge,我们可以看到我们配置的证书认证起作用了
我们点击继续转到网页还是可以正常访问的,但是会告知证书错误
我之前验证安全认证系列之-(五)在网站中使用 PKI中,已经将根据服务端生成的证书链导入到了火狐,我们通过火狐访问,可以发现火狐浏览器可以正常的访问8443端口
至此,我们单向认证服务构建完毕!!!