https双向证书配置自签证书

Nginx的安装

  1. 下载nginx源码包。此次使用的是nginx-1.8.1.tar.gz
  2. 解压安装包。解压命令 tar -xvf nginx-1.8.1.tar.gz
  3. 进入解压包,检测环境。./configure –prefix=/etc/nginx –with-http_ssl_module
  4. 编译make
  5. 安装make instal

证书生成

  1. 服务端证书制作。前提安装好openssl,如果没有安装则使用yum -y install install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre-devel。
  2. 在nginx目录中创建keys目录,存放证书。进入keys目录
  3. 创建CA私钥 openssl genrsa -out ca.key 2048
  4. openssl req -new -x509 -days 36500 -key ca.key -out ca.crt
     

制作服务端证书:

  1. 还是在nginx的keys目录
  2. 创建服务端私钥 
  3. openssl genrsa -out server.pem 2048 
  4. openssl rsa -in server.pem -out server.key
  5. 生成签发请求openssl req -new -key server.pem -out server.csr
  6. 使用CA证书进行签发 
  7. openssl x509 -req -sha256 -extfile /etc/pki/tls/openssl.cnf -extensions v3_req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 36500 -out server.crt
  8. 验证签发证书是否正确openssl verify -CAfile ca.crt server.crt
  9. 制作p12证书(导入浏览器)openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out server.p12

 

开启nginx ssl功能(记住自己设置的密码)

  1. nginx/conf/nginx.conf文件server节点增加如下配置 
  2. listen 443 ssl;
  3. ssl_certificate /etc/nginx/keys/server.crt; #服务端的签发证书 
  4. ssl_certificate_key /etc/nginx/keys/server.key; #服务端的私钥 
  5. ssl_client_certificate /etc/nginx/keys/ca.crt; #根证书公钥 
  6. ssl_verify_client on; #开启对终端的验证 
  7. ssl_protocols TLSv1.2; #支持的TLS协议 
  8. ssl_ciphers 'AES128+EECDH:AES128+EDH:!aNULL'; #加密套件

浏览器测试

由于是双向认证,直接通过浏览器访问https地址是被告知400 Bad Request(No required SSL certificate was sent)的,需要在本机安装client证书。

windows上安装的证书需要pfx格式,也叫p12格式,生成方式如下:

下载刚刚在服务器生成的 server.p12

  1. 打开浏览器
  2. 设置
  3. 高级设置(安全管理 证书管理 导入证书 输入密码)

安装成功后,重启浏览器输入网址访问,浏览器可能会提示你选择证书,选择刚才安装的那个证书即可。

此时有些浏览器会提示用户该证书不受信任,地址不安全之类,这是因为我们的server证书是我们自己颁发的,而非真正的权威CA机构颁布(通常很贵哦~),忽略它既可。

 

查看文档

https://blog.csdn.net/u011275733/article/details/80506085

https://blog.csdn.net/zqs0905/article/details/22155199

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1.  
  2.  

  3.  

你可能感兴趣的:(知识点)