资讯专栏INFORMATION COLUMN

nginx 代理服务器配置双向证书验证

kevin / 930人阅读

摘要:生成证书链用脚本生成一个根证书一个中间证书三个客户端证书脚本来源于有修改中间证书的域名为服务器配置客户端

生成证书链

用脚本生成一个根证书, 一个中间证书(intermediate), 三个客户端证书.

脚本来源于(有修改)
https://stackoverflow.com/que...

中间证书的域名为 localhost.

#!/bin/bash -x

set -e

for C in `echo root-ca intermediate`; do

  mkdir $C
  cd $C
  mkdir certs crl newcerts private
  cd ..

  echo 1000 > $C/serial
  touch $C/index.txt $C/index.txt.attr

  echo "
[ ca ]
default_ca = CA_default
[ CA_default ]
dir            = "$C"    # Where everything is kept
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.
new_certs_dir  = $dir/newcerts            # default place for new certs.
certificate    = $dir/cacert.pem                # The CA certificate
serial         = $dir/serial                # The current serial number
crl            = $dir/crl.pem                # The current CRL
private_key    = $dir/private/ca.key.pem       # The private key
RANDFILE       = $dir/.rnd     # private random number file
nameopt        = default_ca
certopt        = default_ca
policy         = policy_match
default_days   = 365
default_md     = sha256

[ policy_match ]
countryName            = optional
stateOrProvinceName    = optional
organizationName       = optional
organizationalUnitName = optional
commonName             = supplied
emailAddress           = optional

[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name

[req_distinguished_name]

[v3_req]
basicConstraints = CA:TRUE
" > $C/openssl.conf
done

openssl genrsa -out root-ca/private/ca.key 2048
openssl req -config root-ca/openssl.conf -new -x509 -days 3650 -key root-ca/private/ca.key -sha256 -extensions v3_req -out root-ca/certs/ca.crt -subj "/CN=Root-ca"

openssl genrsa -out intermediate/private/intermediate.key 2048
openssl req -config intermediate/openssl.conf -sha256 -new -key intermediate/private/intermediate.key -out intermediate/certs/intermediate.csr -subj "/CN=localhost."
openssl ca -batch -config root-ca/openssl.conf -keyfile root-ca/private/ca.key -cert root-ca/certs/ca.crt -extensions v3_req -notext -md sha256 -in intermediate/certs/intermediate.csr -out intermediate/certs/intermediate.crt

mkdir out

for I in `seq 1 3` ; do
  openssl req -new -keyout out/$I.key -out out/$I.request -days 365 -nodes -subj "/CN=$I.example.com" -newkey rsa:2048
  openssl ca -batch -config root-ca/openssl.conf -keyfile intermediate/private/intermediate.key -cert intermediate/certs/intermediate.crt -out out/$I.crt -infiles out/$I.request
done
服务器

nginx 配置

worker_processes  1;

events {
    worker_connections  1024;
}

stream{
    upstream backend{
        server 127.0.0.1:8080;
    }

    server {
        listen 8888 ssl;
        proxy_pass backend;
        ssl_certificate      intermediate.crt;
        ssl_certificate_key  intermediate.key;
        ssl_verify_depth 2;
        ssl_client_certificate root.crt;
        ssl_verify_client optional_no_ca;
    }
}
客户端
curl 
  -I 
  -vv 
  -x https://localhost:8888/ 
  --proxy-cert client1.crt 
  --proxy-key client1.key 
  --proxy-cacert ca.crt 
  https://www.baidu.com/

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40316.html

相关文章

  • nginx配置ssl加密(单/双向认证、部分https)

    摘要:设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件。 nginx下配置ssl本来是很简单的,无论是去认证中心买SSL安全证书还是自签署证书,但最近公司OA的一个需求,得以有个机会实际折腾一番。一开始采用的是全站加密,所有访问http:80的请求强制转换(rewrite)到https,后来自动化测试结果说响应速度太慢,https比http慢慢30倍,心想怎么可...

    kviccn 评论0 收藏0
  • Nginx 配置 https相关问题

    摘要:证书生成完毕后,可以在中找到四配置当用访问时重定向至重启服务,即可使用访问该网站五其他自动更新证书证书只有天的有效期,所以在证书到期之前,我们需要重新获取这些证书,可以使用这个命令。 一、Nginx基础 1.概念: Nginx是一款轻量级的Web服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 正向代理服务器:一般作用在客户端,位于客户端和服务器之间,客户端发送请...

    nifhlheimr 评论0 收藏0
  • tomcat与nginx的反向代理,https过程分析

    摘要:接下来我们要配置这个的端口,这样他们才能运行时端口号不冲突。问题指明不同的端口号访问也太蠢了吧的确很蠢,所以我们要慢慢过渡学习。接下来我们学习用来进行反向代理。阿里云的部分有一些配置的具体过程。 一、在linux上部署运行多个tomcat 1、以前的我们 虽然说是在linux上,但是windows上也是同样的道理,只不过我们服务器都是选用linux罢了。 原先,自己有多个项目需要部署在...

    aikin 评论0 收藏0
  • 简述 HTTPS 证书认证

    摘要:个人信息交换格式,也称为支持安全存储证书私钥和证书路径中的所有证书。由,标准定义,以作为证书文件后缀名。加密消息语法标准,格式支持证书的存储和认证路径中的所有证书。客户端的证书也采用根证书签名,服务器端对客户端进行证书认证。 前言 在我们不论是对服务器还是客户端进行 HTTPS 进行配置时,首先需要准备好的肯定是相关证书文件了,而证书文件是什么又从哪里可以获取到相关证书,并且它们又是什...

    why_rookie 评论0 收藏0
  • 前端必须知道的Nginx的常用配置

    摘要:负载均衡是通过后端引入一个负载均衡器和至少一个额外的服务器来缓解这类问题增加的服务器和原本的服务器提供相同的内容。负载均衡不需要前端进行配置,主要是服务端进行配置,前端稍作了解即可。 Nginx主要功能 负载均衡 反向代理 动静分离 配置https 负载均衡 负载均衡是一门计算机网络技术,主要用来优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。如果一个网站只有一台服...

    tracymac7 评论0 收藏0

发表评论

0条评论

kevin

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<