Nginx/Lnmp/Lnmpa 双向 ssl 证书认证

之前创建了CA认证机构和网站证书后(详细),试着完成了服务器对客户端的认证,即双向认证。

#生成客户端证书

mkdir /etc/ssl/user  #新建存放目录
cd /etc/ssl/user  #转到存放目录
openssl genrsa -out user.key 2048  #生成key
openssl req -new -key user.key -out user.csr  #生成csr
openssl ca -in user.csr -cert /etc/pki/CA/cacert.pem -keyfile /etc/pki/CA/private/cakey.pem -out user.crt -days 3655  #生成客户端证书crt,有效时限安需要修改
openssl pkcs12 -export -clcerts -in user.crt -inkey user.key -out user.p12  #生成浏览器能够识别的格式
#生成证书时会需要输入些信息,安实际填写即可。

#Nginx虚拟主机配置文件中添加蓝色部分

 server      
        {
                listen       443;
                server_name yourdomain.com;
                index index.html index.htm index.php default.html default.htm default.php;
                root  /home/wwwroot/yourhostdir;
                ssl on;
                ssl_certificate /etc/ssl/ca.crt;
                ssl_certificate_key /etc/ssl/ca.key;
                ssl_client_certificate /etc/pki/CA/cacert.pem;  #CA服务器证书
                ssl_session_timeout  5m;  #超时时间
                ssl_verify_client on;  #打开SSL客户端校验
  ...
       }
#以下是使用rewrite重写URL强制使用SSL代码
server
       {
                listen       80;
                server_name yourdomain.com;
                rewrite ^/(.*)$ https://yourdomain.com/$1 permanent;
       }

#浏览器导入证书

把生成的user.p12拷出来,按不同浏览器导入即可

标签: Linux, lnmpa, lnmp, Openssl, ssl, nginx

评论已关闭