SSL双向认证的认证模式设置问题

OpenSSL 验证证书模式

OpenSSL 有四种验证证书的模式,这样可以自己根据验证结构来决定应用程序的行为。四种验证模式分别是:

  • SSL_VERIFY_NONE:完全忽略验证证书的结果。当握手必须完成的话,就选中这个选项。其实真正有证书的人很少,尤其是在中国,那么如果 SSL 运用于一些免费的服务,比如 EMAIL 的时候,SERVER 端最好采用这个模式。
  • SSL_VERIFY_PEER:希望验证对方的证书。这个是最一般的模式。对 CLIENT 来说,如果设置了这样的模式,验证SERVER的证书出了任何错误,SSL 握手都告吹。对 SERVER 来说,如果设置了这样的模式,CLIENT 倒不一定要把自己的证书交出去。如果 CLIENT 没有交出证书,SERVER 自己决定下一步怎么做。
  • SSL_VERIFY_FAIL_IF_NO_PEER_CERT:这是 SERVER 使用的一种模式,在这种模式下, SERVER 会向 CLIENT 要证书。如果 CLIENT 不给,SSL 握手告吹。 
  • SSL_VERIFY_CLIENT_ONCE: 这是仅能使用在 SSL SESSION RENEGOTIATION 阶段的一种方式。如果不是用这个模式的话,那么在 RENEGOTIATION 的时候,CLIENT 都要把自己的证书送给 SERVER,然后做一番分析。这个过程很消耗 CPU 时间的,而这个模式则不需要 CLIENT 在 RENEGOTIATION 的时候重复送自己的证书了。

nginx acme.sh 记录

 1SSL
 2
 31.安装acme.h脚本
 42.生成csr
 5acme.sh  --issue -d linuxcrypt.top -d www.linuxcrypt.top -d blog.linuxcrypt.top -d git.linuxcrypt.top -d cloud.linuxcrypt.top -d build.linuxcrypt.top -d mysql.linuxcrypt.top -d api.linuxcrypt.top -d music.linuxcrypt.top -d repo.linuxcrypt.top  -d wx.linuxcrypt.top --webroot /usr/local/nginx/html/
 63.安装证书
 7acme.sh --installcert \
 8-d linuxcrypt.top \
 9-d www.linuxcrypt.top \
10-d blog.linuxcrypt.top \
11-d git.linuxcrypt.top \
12-d cloud.linuxcrypt.top \
13-d build.linuxcrypt.top \
14-d mysql.linuxcrypt.top \
15-d api.linuxcrypt.top \
16-d music.linuxcrypt.top \
17-d repo.linuxcrypt.top \
18-d wx.linuxcrypt.top \
19--key-file /usr/local/nginx/conf/ssl/linuxcrypt.top.key \
20--fullchain-file /usr/local/nginx/conf/ssl/linuxcrypt.top.cer \
21--reloadcmd "/usr/local/nginx/sbin/nginx -s stop;sleep 1;/usr/local/nginx/sbin/nginx"
224.nginx.conf
23    server {
24        listen       80;
25        charset utf-8;
26        server_name  linuxcrypt.top www.linuxcrypt.top *.linuxcrypt.top;
27        access_log  logs/http.linuxcrypt.top.access.log  main;
28        rewrite ^(.*)$  https://$host$1 permanent;
29
30        location ~ /.well-known {
31            root   html;
32        }
33
34    }
35    server {
36        listen       443;
37        server_name  linuxcrypt.top www.linuxcrypt.top *.linuxcrypt.top;
38        charset utf-8;
39        access_log  logs/https.linuxcrypt.top.access.log  main;
40
41        ssl on;
42        ssl_certificate      /usr/local/nginx/conf/ssl/linuxcrypt.top.cer;
43	ssl_certificate_key  /usr/local/nginx/conf/ssl/linuxcrypt.top.key;
44        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
45
46        ssl_session_timeout 30m;
47        ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
48        ssl_session_cache shared:SSL:10m;
49        ssl_dhparam /usr/local/nginx/conf/ssl/dhparams.pem;
50        ssl_prefer_server_ciphers on;
51
52        ssl_buffer_size 8k;# Improves TTFB by using a smaller SSL buffer than the nginx default
53
54        location / {
55            #proxy_pass http://172.16.6.113:8383;
56            root   html;
57        }
58
59    }
605.old  保留
61acme.sh  --installcert  -d linuxcrypt.top  --certpath /etc/nginx/ssl/linuxcrypt.top.pem --keypath /etc/nginx/ssl/linuxcrypt.top.key  --capath  /etc/nginx/ssl/linuxcrypt.top.pem
626. dhparams
63openssl dhparam -out dhparams.pem 4096