nginx实现双向认证

这篇具有很好参考价值的文章主要介绍了nginx实现双向认证。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 创建根证书

#创建根证书私钥:
openssl genrsa -out root.key 1024

#创建根证书请求文件:
openssl req -new -out root.csr -key root.key
#创建根证书:
openssl x509 -req -in root.csr -out root.crt -signkey root.key -CAcreateserial -days 3650
  • 证书的Common Name可填写为 root . 所有客户端和服务器端的证书这个字段需要填写域名或者ip,一定要注意的是,根证书的这个字段和客户端证书、服务器端证书不能一样
  • 其他所有字段的填写,根证书、服务器端证书、客户端证书需保持一致
  • 无用项可以选择直接回车跳过

最终得到:

  • root.crt : 签名有效期为10年的根证书
  • root.key: 根证书私钥文件
  • root.csr: 根证书请求文件

后面我们可以用这个根证书去颁发服务器证书和客户端证书

2. 根据根证书创建服务端证书

#生成服务器端证书私钥:
openssl genrsa -out server.key 1024

#生成服务器证书请求文件,过程和注意事项参考根证书,本节不详述:
openssl req -new -out server.csr -key server.key

#生成服务器端公钥证书
openssl x509 -req -in server.csr -out server.crt -signkey server.key -CA root.crt -CAkey root.key -CAcreateserial -days 3650

通过上面的三个命令,我们得到:

server.key:服务器端的秘钥文件
server.crt:有效期十年的服务器端公钥证书,使用根证书和服务器端私钥文件一起生成
root.srl: CA签发证书的序列号记录文件,全名是 root.Serial 。
server.csr : 服务端证书请求文件(请求证书时使用, 后续配置无用)

3. 根据根证书创建客户端证书

需要注意的是, 可以生成多个客户端证书, 只需安装下面1-4步重新生成即可

#生成客户端证书秘钥:
openssl genrsa -out client.key 1024

#生成客户端证书请求文件,过程和注意事项参考根证书,本节不详述:
openssl req -new -out client.csr -key client.key

#生客户端证书
openssl x509 -req -in client.csr -out client.crt -signkey client.key -CA root.crt -CAkey root.key -CAcreateserial -days 3650

#生客户端p12格式证书,需要输入一个密码,选一个好记的,比如123456
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12

重复使用上面的三个命令,我们得到:

client.key:客户端的私钥文件
client.crt:有效期十年的客户端证书,使用根证书和客户端私钥一起生成
client.p12:客户端p12格式,这个证书文件包含客户端的公钥和私钥,主要用来给浏览器或postman访问使用
clinet.csr : 客户端证书请求文件(请求证书时使用, 后续配置无用)
 

4. nginx配置

server {
        listen       443 ssl;
        server_name  www.yourdomain.com;# 无域名可填写ip
        ssl                  on;  
        ssl_certificate      /data/sslKey/server.crt;  #server公钥证书
        ssl_certificate_key  /data/sslKey/server.key;  #server私钥
        ssl_client_certificate /data/sslKey/root.crt;  #根证书,可以验证所有它颁发的客户端证书
        ssl_verify_client on;  #开启客户端证书验证  

		# 反向代理eg: 作用是通过https(443端口)访问, 则会直接去请求本机的8991端口
		 location / {
           	proxy_pass http://127.0.0.1:8991/;
    		  }

		
        #location / {
        #    root   html;
        #    index  index.html index.htm;
        # }
    }

注意:

配置的主要内容是配置了服务器端证书的公钥私钥以及根证书的公钥, 并且ssl_verify_client 参数设置为 on

如果客户端证书不是由根证书直接颁发的,配置中还需要加一个配置:ssl_verify_depth 1;

配置完成后,通过nginx -s reload 令配置文件重新加载, 无需重启

如果手里面只有通过正规途径申请下来的证书(而不是上面自签证做法), 得到的证书如下面所示, 这里只有服务端证书而没有服务端和根证书, 所以仍需要我们以自签证的方式生成根证书以及客户端证书

访问测试

访问方式1:curl带证书访问

   curl --cert ./client.crt --key ./client.key https://xxx.xxx.com -k

访问方式2:postman

1.在设置General中先把SSL certificate verification关掉

nginx实现双向认证

 2.可以Certificates中配置p12文件,p12文件可以认为是一对公私钥的合体文件, 同时也要配置p12文件的密码。注意这里的地址和端口要与实际的一致,否则请求时会认证失败。

nginx实现双向认证

 3.也可以在Certificates中配置客户端公私钥证书。无需配置密码

nginx实现双向认证

 文章来源地址https://www.toymoban.com/news/detail-463194.html

到了这里,关于nginx实现双向认证的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • openssl3.2 - 检查rsa证书和私钥是否匹配(快速手搓一个工具)

    openssl3.2 - 检查rsa证书和私钥是否匹配(快速手搓一个工具)

    在学习openssl官方的/test/certs的脚本实现, 做到第30个脚本实验时, 发现根CA证书和key不匹配. 估计做实验时, 遇到脚本需要的文件, 就随便拷贝一个同名的文件过来, 导致证书和key不是一个脚本产生的, 所以不匹配 就想从前面的实验中, 找出匹配的证书和key来做实验, 肯定有啊. 这事

    2024年01月24日
    浏览(34)
  • springboot整合https使用自签名证书实现浏览器和服务器之间的双向认证

    springboot整合https使用自签名证书实现浏览器和服务器之间的双向认证

    效果描述: 本地环境  两台以上电脑  可以实现安装客户端证书的电脑可以访问springboot启动项目,没有安装客户端证书的电脑无法访问springboot启动项目 1.操作:需要安装openssl工具 工具包:Win64OpenSSL_Light-3_3_0.exe 或者Win64OpenSSL_Light-3_3_0.msi  官网:[ Downloads ] - /source/index.html

    2024年04月28日
    浏览(8)
  • Nginx 使用 HTTPS(准备证书和私钥)

    生成私钥 这会生成一个加密的私钥文件server.key。 执行openssl genrsa命令时,使用-des3参数会要求设置一个密码来加密生成的私钥。为了安全起见,密码应该足够复杂和长。使用-des3生成受密码保护的私钥也是更安全的做法。 另外,在后续生成证书过程中,需要输入同样的密码才能使

    2024年02月12日
    浏览(9)
  • ios私钥证书的创建方法

    ios私钥证书的创建方法

    ios私钥证书是苹果公司为ios开发者打包app,推出的一种数字证书,只有同一个苹果开发者账号生成的ios私钥证书打的包,才能上架同一个开发者账号的app store。因此不要指望别人给你共享私钥证书和描述文件,因为别人的证书和描述文件打的包,只能在别人的苹果开发者账号

    2024年02月14日
    浏览(7)
  • tomcat p12证书另存为nginx .crt证书和.key私钥

    Tomcat使用的.pfx或.keystore文件都是私钥及公钥证书一起的,通过pin保证安全;nginx只需要使用.pem或.crt公钥证书文件和.key私钥即可,如果原ssl证书不方便重新下载,在已有tomcat证书的情况下,需要手动导出处理。 下载openssl 1.1.1 通过命令导出文件 Over.

    2024年02月14日
    浏览(21)
  • 双向认证证书生成过程

    双向认证证书生成过程

    https://help.aliyun.com/document_detail/160093.html 1.双向认证流程: 证书生成流程

    2024年02月07日
    浏览(8)
  • openssl自签名CA根证书、服务端和客户端证书生成并模拟单向/双向证书验证

    1.1 生成CA证书私钥 openssl genrsa -aes256 -out ca.key 2048 1.2 取消密钥的密码保护 openssl rsa -in ca.key -out ca.key 1.3 生成根证书签发申请文件(csr文件) openssl req -new -sha256 -key ca.key -out ca.csr -subj \\\"/C=CN/ST=FJ/L=XM/O=NONE/OU=NONE/CN=localhost/emailAddress=test@test.com\\\" 上述参数含义 req----执行证书签发命令

    2024年04月25日
    浏览(14)
  • 在线创建ios正式打包的p12私钥证书和证书profile文件

    在线创建ios正式打包的p12私钥证书和证书profile文件

     ios开发的正式打包,需要p12私钥证书和证书profile文件。这两个文件卡住了很多想要了解ios开发的同学们。官方提供的方法是需要使用mac电脑,先创建csr文件,再去苹果开发者中心生成cer证书,然后再将cer证书导入mac系统,再从mac系统导出p12,整个过程不仅需要mac电脑,而且

    2024年02月10日
    浏览(7)
  • Kubernetes客户端认证——基于CA证书的双向认证方式

    Kubernetes客户端认证——基于CA证书的双向认证方式

    Kubernetes集群的访问权限控制由API Server负责,API Server的访问权限控制由身份验证(Authentication)、授权(Authorization)和准入控制(Admission control)三个步骤组成,这个三个步骤是按序进行的(详细介绍请参见《(转)使用kubectl访问Kubernetes集群时的身份验证和授权》)。 其中身份验证

    2023年04月10日
    浏览(7)
  • 【ssl认证、证书】SSL 证书基本概念、证书格式、openssl和keytool的区别

    【ssl认证、证书】SSL 证书基本概念、证书格式、openssl和keytool的区别

    相关文章: //-----------Java SSL begin---------------------- 【ssl认证、证书】SSL双向认证和SSL单向认证的区别(示意图) 【ssl认证、证书】java中的ssl语法API说明(SSLContext)、与keytool 工具的联系 【ssl认证、证书】SSL双向认证java实战、keytool创建证书 【ssl认证、证书】Wireshark抓包分析 【s

    2024年02月02日
    浏览(7)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包