Nginx单向认证和双向认证安装配置

时间:2024-03-16 11:38:46

1.Nginx单向认证的安装配置

参考
https://www.cnblogs.com/zhoulf/p/4040015.html?tdsourcetag=s_pcqq_aiomsg
补充
Nginx.config配置文件

 upstream server_pool {
       server 10.110.26.78:8080;
 }
server {
     listen       443;    //默认端口
     server_name  localhost;
     ssl on;
     ssl_certificate      /etc/nginx/ssl1/server.crt;
     ssl_certificate_key  /etc/nginx/ssl1/server.key;
    
     ssl_session_timeout 5m;
     ssl_protocols SSLv2 SSLv3 TLSv1;
     ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
     ssl_prefer_server_ciphers on;

    location / {
        proxy_pass        http://server_pool;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        root   /usr/share/nginx/html;
        index  index.html index.htm;
   }
}

Tomcat配置文件
         Nginx 反向代理 HTTP 不需要更改 Tomcat 配置。与 HTTP 代理不同的是,这里需要通过更改 tomcat 的配置文件来告诉它前面的 HTTPS 代理。

<Connector port=”8080″ protocol=”HTTP/1.1″
connectionTimeout=”20000″
redirectPort=”8443″/>

修改为
<Connector port=”8080″ protocol=”HTTP/1.1″
connectionTimeout=”20000″
redirectPort=”8443″
scheme=”https”
proxyPort=”443″ />

配置完成以后直接在浏览器访问https://10.110.28.29:443,如果出现tomcat的欢迎页面则配置完成

2.Nginx双向认证的安装配置

参考
[https://www.zhoufengjie.cn/?p=185&tdsourcetag=s_pcqq_aiomsg]
补充
创建证书的步骤
(1) CA证书生成
(2) 服务器证书的生成
(3) 客户端证书的生成
(4) 将证书转换为浏览器都能识别的 PKCS12 文件

安装配置时注意原作者文中一些命令的引号是否为英文状态,中文状态会报错。
(5) 配置文件
nginx配置文件(修改完之后重启nginx)

server {
    listen 443;
    server_name www.chenyu.cn;
    ssl on;
    ssl_certificate     /etc/nginx/ca/server/server.crt;
    ssl_certificate_key /etc/nginx/ca/server/server.key;
    ssl_client_certificate /etc/nginx/ca/private/ca.crt;
    
    ssl_verify_client on;
    ssl_session_timeout 5m;
    ssl_protocols SSLv2 SSLv3 TLSv1;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    ssl_prefer_server_ciphers on;
    location / {
      proxy_pass http://test03_pool;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      root /usr/share/nginx/html;
      index index.html index.htm;
    }
  }
  upstream test03_pool {
    ip_hash;
    server 192.168.100.1;
  }

Tomcat配置 (修改完配置之后,重启 tomcat)

<Connector port=”8080″ protocol=”HTTP/1.1″
connectionTimeout=”20000″
redirectPort=”8443″/>

修改为
<Connector port=”8080″ protocol=”HTTP/1.1″
connectionTimeout=”20000″
redirectPort=”8443″
scheme=”https”
proxyName=”www.zhoufengjie.cn”
proxyPort=”443″ />

(6)验证证书是否生效

客户访问 ssl 验证
谷歌浏览器使用 https 访问原有项目 https:// www.chenyu.cn,通过host固定是 Nginx 所在服务器,提示 400 Bad Request(No required SSL certificate was sent):
这是因为 https 双向验证需要客户端安装证书。

windows os 下拿到生成的证书 client.p12,直接双击它,进入 “证书导入向导”:一步一步下一步,最后直接点击 “完成” 按钮完成证书导入。
Nginx单向认证和双向认证安装配置
重启谷歌浏览器,再次访问 https://www.chenyu.cn,浏览器要求我们选择证书:输入密码
Nginx单向认证和双向认证安装配置
选中刚才安装好的那个证书(www.chenyu.cn),点击 “确定”,提示 “隐私设置错误”:
这是因为我们服务器用的是自己签发的证书。选择继续访问,守得云开见月明,终于看到久违了的项目登录页面,成功了:
可以点击浏览器输入框左侧的小锁图标查看我们导入的客户端证书相关信息: