1、安装nginx

参考《nginx安装》:http://www.ttlsa.com/nginx/nginx-install-on-linux/

如果你想在单IP/服务器上配置多个https,请看《nginx 同一个IP上配置多个HTTPS主机

2、使用openssl实现证书中心

由于是使用openssl架设私有证书中心,因此要保证以下字段在证书中心的证书、服务端证书、客户端证书中都相同

Country Name
State or Province Name
Locality Name
Organization Name
Organizational Unit Name
1
2
3
4
5
Country Name
State or Province Name
Locality Name
Organization Name
Organizational Unit Name

编辑证书中心配置文件

vim
/etc/pki/tls/openssl.cnf
[ CA_default ]
dir             = /etc/pki/CA
certs           = $dir/certs            # Where the issued certs are
kept
crl_dir         = $dir/crl              # Where the issued crl are kept
database        = $dir/index.txt        # database index file.
#unique_subject = no                    # Set to 'no' to allow creation
of
# several ctificates with same subject.
new_certs_dir   = $dir/newcerts         # default place for new certs.
certificate     = $dir/cacert.pem       # The CA certificate
serial          = $dir/serial           # The current serial number
crlnumber       = $dir/crlnumber        # the current crl number        
                               # must be commented out to leave a V1
CRL
crl             = $dir/crl.pem          # The current CRL
private_key     = $dir/private/cakey.pem# The private key
RANDFILE        = $dir/private/.rand    # private random number file
[ req_distinguished_name ]
countryName                     = Country Name(2 letter code)
countryName_default             = CN
countryName_min                 = 2
countryName_max                 = 2
stateOrProvinceName             = State or Province Name (full name)
stateOrProvinceName_default     = FJ
localityName                    = Locality Name (eg, city)
localityName_default            = FZ
0.organizationName              = Organization Name (eg, company)
0.organizationName_default      = zdz
organizationalUnitName          = Organizational Unit Name (eg,
section)
organizationalUnitName_default  = zdz
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
vim /etc/pki/tls/openssl.cnf
[ CA_default ]
dir             = /etc/pki/CA
certs           = $dir/certs            # Where the issued certs are kept
crl_dir         = $dir/crl              # Where the issued crl are kept
database        = $dir/index.txt        # database index file.
#unique_subject = no                    # Set to 'no' to allow creation of
# several ctificates with same subject.
new_certs_dir   = $dir/newcerts         # default place for new certs.
certificate     = $dir/cacert.pem       # The CA certificate
serial          = $dir/serial           # The current serial number
crlnumber       = $dir/crlnumber        # the current crl number                                        # must be commented out to leave a V1 CRL
crl             = $dir/crl.pem          # The current CRL
private_key     = $dir/private/cakey.pem# The private key
RANDFILE        = $dir/private/.rand    # private random number file
[ req_distinguished_name ]
countryName                     = Country Name(2 letter code)
countryName_default             = CN
countryName_min                 = 2
countryName_max                 = 2
stateOrProvinceName             = State or Province Name (full name)
stateOrProvinceName_default     = FJ
localityName                    = Locality Name (eg, city)
localityName_default            = FZ
0.organizationName              = Organization Name (eg, company)
0.organizationName_default      = zdz
organizationalUnitName          = Organizational Unit Name (eg, section)
organizationalUnitName_default  = zdz

创建证书私钥

cd /etc/pki/CA/private
(umask 077;openssl genrsa -out cakey.pem 2048)
1
2
cd /etc/pki/CA/private
(umask 077;openssl genrsa -out cakey.pem 2048)

生成自签证书

cd /etc/pki/CA/
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days=3655
1
2
cd /etc/pki/CA/
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days=3655

3、创建服务器证书

mkdir /usr/local/nginx/ssl
cd /usr/local/nginx/ssl
(umask 077;openssl genrsa -out nginx.key 1024)
openssl req -new -key nginx.key -out nginx.csr
openssl ca -in nginx.csr -out nginx.crt -days=3650
1
2
3
4
5
mkdir /usr/local/nginx/ssl
cd /usr/local/nginx/ssl
(umask 077;openssl genrsa -out nginx.key 1024)
openssl req -new -key nginx.key -out nginx.csr
openssl ca -in nginx.csr -out nginx.crt -days=3650

4、创建客户端浏览器证书

(umask 077;openssl genrsa -out client.key 1024)
openssl req -new -key client.key -out client.csr
openssl ca -in client.csr -out client.crt -days=3650
将文本格式的证书转换成可以导入浏览器的证书
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
1
2
3
4
5
(umask 077;openssl genrsa -out client.key 1024)
openssl req -new -key client.key -out client.csr
openssl ca -in client.csr -out client.crt -days=3650
将文本格式的证书转换成可以导入浏览器的证书
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12

5、配置nginx服务器验证

vim /usr/local/nginx/conf/nginx.conf
ssl on;
ssl_certificate         /usr/local/nginx/ssl/nginx.crt;
ssl_certificate_key     /usr/local/nginx/ssl/nginx.key;
ssl_client_certificate  /usr/local/nginx/ssl/cacert.pem;
ssl_session_timeout     5m;
#ssl_verify_client       on;                         服务器验证客户端,暂时不开启,让没有证书的客户端可以访问,先完成单向验证
ssl_protocols           SSLv2 SSLv3 TLSv1;
1
2
3
4
5
6
7
8
vim /usr/local/nginx/conf/nginx.conf
ssl on;
ssl_certificate         /usr/local/nginx/ssl/nginx.crt;
ssl_certificate_key     /usr/local/nginx/ssl/nginx.key;
ssl_client_certificate  /usr/local/nginx/ssl/cacert.pem;
ssl_session_timeout     5m;
#ssl_verify_client       on;                         服务器验证客户端,暂时不开启,让没有证书的客户端可以访问,先完成单向验证
ssl_protocols           SSLv2 SSLv3 TLSv1;


点击“我已充分了解可能的风险”

点击“添加例外”

点击“确认安全例外”

6、配置双向验证
nginx配置开启ssl_verify_client       on;
在客户端浏览器没有安装证书的情况下访问


在客户端浏览器导入证书

将在Linux服务器上生成的客户端证书下载到windows

打开火狐浏览器的高级选项卡

在证书管理器中的您的证书中点击导入

选择证书并导入

再次刷新网页,弹出“使用确认”点击确定,就实现了双向验证

本文转自:http://www.zhengdazhi.com/?p=865

nginx配置ssl双向验证 nginx https ssl证书配置的更多相关文章

  1. 请给你的短信验证码接口加上SSL双向验证

    序言 去年年底闲来几天,有位同事专门在网上找一些注册型的app和网站,研究其短信接口是否安全,半天下来找到30来家,一些短信接口由于分析难度原因,没有继续深入,但差不多挖掘到20来个,可以肆意被调用, ...

  2. MQTT研究之EMQ:【SSL双向验证】

    EMQ是当前MQTT中,用于物联网领域中比较出色的一个broker,今天我这里要记录和分享的是关于SSL安全通信的配置和注意细节. 环境: 1. 单台Linux CentOS7.2系统,安装一个EMQ ...

  3. Netty实现SSL双向验证完整实例

    Netty实现SSL双向验证完整实例 博客分类: netty nettyssl自签证书  一.证书准备 要使用ssl双向验证,就必须先要生成服务端和客户端的证书,并相互添加信任,具体流程如下(本人调试 ...

  4. 阿里云https免费证书配置-包教会

      阿里云https免费证书配置-包教会-有需要请联系小编! 小编个人站点:https://www.itdog.site/ 小编微信号:wvqusrtg  

  5. nginx配置https双向验证(ca机构证书+自签证书)

    nginx配置https双向验证 服务端验证(ca机构证书) 客户端验证(服务器自签证书) 本文用的阿里云签发的免费证书实验,下载nginx安装ssl,文件夹有两个文件 这两个文件用于做服务器http ...

  6. Linux 中 Xampp 的 https 安全证书配置

    博客地址:http://www.moonxy.com 一.前言 HTTP 协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的 HTTP 的 ...

  7. ios https 安全证书配置

    原定于2017年1月1日起所有提交到 App Store 的App必须强制开启 ATS,需要配置Https.但是现在不需要了,无固定期限的往后延期了,但是这个还是得弄明白下为好,说不定哪天突然就让弄了 ...

  8. 【LNMP】基于阿里云的https免费证书配置

    1 登录阿里云账户,左侧菜单选择    ->   2 右上角选择购买证书,选择免费型 3 按照流程购买,回到订单列表.填写认证信息,选择DNS解析,  在列表 选择下载证书 4 我的服务器是ng ...

  9. Java Https双向验证

    CA: Certificate Authority,证书颁发机构 CA证书:证书颁发机构颁发的数字证书 参考资料 CA证书和TLS介绍 HTTPS原理和CA证书申请(满满的干货) 单向 / 双向认证 ...

随机推荐

  1. [Elixir008]Nested Module里的动态函数调用方式

    有时我们需要动态生成一些模块名,然后调用它里面的函数.但是我们常常碰到的却是明明有那个模块,结果还是raise模块未定义... 我们来看看到底怎么回事? 首先我们定义一个函数 iex(1)> d ...

  2. 微软职位内部推荐-UX Designer II

    微软近期Open的职位: Search Technology Center Asia (STCA) Position: UX Designer Location: Beijing, China Sea ...

  3. sudo权限添加 和 rpm、deb之名词解释

    sudo权限添加: 刚开始用Center_os Linux操作系统,想装个输入法,搜了一下,看到linux下的搜狗输入法(帖子链接)下载下来的文件的扩展名是.deb,直接用帖子上的一个命令: sudo ...

  4. python 遗传算法精简版

    精简版遗传算法,算法中仅采用变异算子而没有使用交叉算子,但是进化依然很有效 from string import ascii_lowercase from random import choice, ...

  5. Nutch搜索引擎(第4期)_ Eclipse开发配置

    1.环境准备 1.1 本期引言 前三期分别介绍了Nutch与Solr在Linux上面的安装,并做了简单的应用,这一期从开发的角度进行,因为我们日常最熟悉的开发环境是Windows,所以本期详细介绍Wi ...

  6. [CareerCup] 7.1 Basketball Shooting Game 投篮游戏

    7.1 You have a basketball hoop and someone says that you can play one of two games. Game 1: You get ...

  7. lambda的Func<>函数

    Func<int,int,int> fc=(int x,int y)=>x*y;Console.WriteLine(fc(5, 2)); //声明一个方法,返回值为int,参数是两个 ...

  8. 20135328信息安全系统设计基础第一周学习总结(Linux应用)

    学习计时:共xxx小时 读书: 代码: 作业: 博客: 一.学习目标 1. 能够独立安装Linux操作系统   2. 能够熟练使用Linux系统的基本命令   3. 熟练使用Linux中用户管理命令/ ...

  9. 关于个人博客和Github地址提交

    请大家尽快按照http://www.cnblogs.com/SivilTaram/p/5857858.html的要求提交个人博客和Github地址.谢谢!

  10. mysql命令行

    mysql -u root -p create database bookstore; drop database bookstore; use bookstore create table user ...