当前位置: 首页 > 编程笔记 >

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

颛孙高义
2023-03-14
本文向大家介绍nginx代理服务器配置双向证书验证的方法,包括了nginx代理服务器配置双向证书验证的方法的使用技巧和注意事项,需要的朋友参考一下

生成证书链

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

中间证书的域名为 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/

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对小牛知识库的支持。如果你想了解更多相关内容请查看下面相关链接

 类似资料:
  • 本文向大家介绍Nginx服务器的反向代理proxy_pass配置方法讲解,包括了Nginx服务器的反向代理proxy_pass配置方法讲解的使用技巧和注意事项,需要的朋友参考一下 就普通的反向代理来讲 Nginx的配置还是比较简单的,如: 或者可以 Apache2的反向代理的配置是: 然而,如果要配置一个相对复杂的反向代理 Nginx相对Apache2就要麻烦一些了 比如,将url中以/wap/开

  • 我浏览了互联网,还没有找到一个解决方案或方法来验证证书时,通过HTTPS连接使用TIDWTTP。 我已经连接了一个idsslohandlersocketopenssl组件作为IOHandler,设置SSLModes,等等https://s3.amazonaws.com它无法验证证书。 OpenSSL(Indy)提供 “连接SSL时出错。SSL3\u获取\u服务器\u证书:证书验证失败” OpenS

  • 验证 SSH 服务器证书(客户端) 和 SSH 用户证书 类似,使用客户端机构认证来验证主机。需要一个 SSH 服务器数字证书认证机构签发服务器证书,客户端只需要保存 CA 的公钥。 使用一台处于气隙系统下的计算机来生成服务器数字证书认证机构的根证书: ❯ ssh-keygen -C "SSH Server Certificate Authority" -f sshserver.root.ca 使

  • 想得到一些关于设置简单的双向ApacheSSL的建议。 我们使用openSSL创建了一个密钥文件和csr请求。然后,我们将其提交给CA,并收到一个crt文件与CA的crt文件一起返回。 我们已经配置了ApacheHTTP。conf文件,并在加载mod_ssl模块后添加了以下参数。 开启SSLEngine SSLCACertificateFile/local/fast/fcHome/deployme

  • 本文向大家介绍Nginx配置SSL自签名证书的方法,包括了Nginx配置SSL自签名证书的方法的使用技巧和注意事项,需要的朋友参考一下 生成自签名SSL证书 生成RSA密钥(过程需要设置一个密码,记住这个密码) 拷贝一个不需要输入密码的密钥文件 生成一个证书请求 这里会提示输入国家,地区组织,email等信息.最重要的一个是"common name",需要与网站域名相同. 输入完这些就会生成一个d

  • 问题内容: 在我们的iOS项目中,我们将用于生成AdHoc和AppStore构建的签名证书和供应配置文件都提交给版本控制存储库。这样,每当新开发人员下载该应用程序的新副本时,他就拥有了为测试人员创建AdHoc构建所需的一切。 我们正在使用Jenkins进行持续集成,我希望有一个脚本可以对提交的文件进行完整性检查。特别是,我想检查提交的配置文件是否确实是使用在存储库中提交的签名证书生成的。 有谁知道