基于Let’s Encrypt证书实现nginx https双向认证

栏目: 服务器 · Nginx · 发布时间: 5年前

内容简介:第一步,先基于Let’s Encrypt证书配置https单向校验的网站出来先修改nginx的配置然后打开浏览器,访问:

第一步,先基于Let’s Encrypt证书配置https单向校验的网站出来先

wget https://dl.eff.org/certbot-auto

chmod u+x certbot-auto

./certbot-auto certonly --standalone -m abc@yubangweb.com --agree-tos -d abc.yubangweb.com

修改nginx的配置

server {
        listen 80;
        listen 443 ssl;
        server_name abc.yubangweb.com;
        root /var/web;

        ssl_certificate /etc/letsencrypt/live/abc.yubangweb.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/abc.yubangweb.com/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/abc.yubangweb.com/chain.pem;

        location / {
        }
}

然后打开浏览器,访问: https://abc.yubangweb.com/

这个时候就配置好了单向校验的https网站

第二步,就是自签客户端证书

# 签服务端证书
openssl genrsa -des3 -out ca.key 4096
genrsa -out ca.key 4096
req -new -x509 -days 365 -key ca.key -out ca.crt

# 签客户端证书
genrsa -out client.key 4096
req -new -key client.key -out client.csr
x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
openssl pkcs12 -in client.p12 -out all.pem -nodes

第三步,nginx启用客户端证书校验

# 在刚才的配置文件添加这两行
ssl_client_certificate /root/ssl/ca.crt;
ssl_verify_client on;

测试一下客户端证书是否生效(在其它机器执行下面命令)

# 注意复制上面生成的all.pem文件
curl -k --cert all.pem  https://abc.yubangweb.com

完整的nginx配置:

server {
        listen 80;
        listen 443 ssl;
        server_name abc.yubangweb.com;
        root /var/web;

        ssl_certificate /etc/letsencrypt/live/abc.yubangweb.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/abc.yubangweb.com/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/abc.yubangweb.com/chain.pem;

        ssl_client_certificate /root/ssl/ca.crt;
        ssl_verify_client on;

        location / {
        }
}

如果需要控制某些请求需要客户端证书校验,则使用下列方法

server {
        listen 80;
        listen 443 ssl;
        server_name abc.yubangweb.com;
        root /var/web;

        ssl_certificate /etc/letsencrypt/live/abc.yubangweb.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/abc.yubangweb.com/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/abc.yubangweb.com/chain.pem;

        ssl_client_certificate /root/ssl/ca.crt;
        ssl_verify_client optional;

        location / {
            if ($ssl_client_verify != SUCCESS) {
                return 401;
            }
        }
        
        location /abc {
        
        }
        
}

以上所述就是小编给大家介绍的《基于Let’s Encrypt证书实现nginx https双向认证》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

R语言实战

R语言实战

卡巴科弗 (Robert I.Kabacoff) / 高涛、肖楠、陈钢 / 人民邮电出版社 / 2013-1 / 79.00元

数据时代已经到来,但数据分析、数据挖掘人才却十分短缺。由于“大数据”对每个领域的决定性影响, 相对于经验和直觉,在商业、经济及其他领域中基于数据和分析去发现问题并作出科学、客观的决策越来越重要。开源软件R是世界上最流行的数据分析、统计计算及制图语言,几乎能够完成任何数据处理任务,可安装并运行于所有主流平台,为我们提供了成千上万的专业模块和实用工具,是从大数据中获取有用信息的绝佳工具。  本书从解决......一起来看看 《R语言实战》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试