当前位置: 首页 > 知识库问答 >
问题:

确保TLSv1.2在特技?

郝哲茂
2023-03-14

请耐心等待,因为我可能对创建证书以实现TLS连接缺乏一些理解。

我试图建立一个连接与TLSv1.2加密从客户端到服务器。我已经在客户端创建了自己的CA证书和CSR,并开始签署客户端。

在生成CSR并使用CA证书签名后,在客户端:

  • client-cert.pem
  • 客户企业社会责任。pem
  • 客户端密钥。质子交换膜

使用的命令:

  • openssl req节点-newkey rsa: 4096-keyoutclient-key.pemclient-csr.pem
  • openssl验证-CAfileca-cert.pemclient-cert.pem

在服务器端,我还创建了一个CSR,并用我自己的CA签名:

  • server-cert.pem
  • 服务器密钥。质子交换膜

在服务器端,在我创建CA证书并签署客户端证书后:

  • ca-cert.pem
  • ca-cert.srl
  • ca-key.pem

使用的命令:

  • openssl req-x509-newkey rsa: 4096-天3650-keyoutca-key.pemca-cert.pem
  • openssl x509-req-inserver-req.pem-天3650-CAca-cert.pem-CAkeyca-key.pem-CAcreatesear-outserver-cert.pem
  • openssl验证-CAfileca-cert.pemclient-cert.pem

所以在我的nginx方面,我已经这样配置了它。(流连接)

server {
  listen 10043;
  proxy_ssl on;
  proxy_ssl_protocols TLSv1.2;
  proxy_ssl_session_reuse on;
  ssl_prefer_server_ciphers on;
  ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
  ssl_certificate /etc/nginx/certs/tls_certs/client-cert.pem;
  ssl_certificate_key /etc/nginx/certs/tls_certs/client-key.pem;
  ssl_dhparam /etc/nginx/certs/tls_certs/dhparam.pem;
  access_log /var/log/nginx/lpe-ing.log proxy;
  proxy_pass 123.456.789.123:12345;
}

在我的服务器endpoint上,它正在使用stunnel

cert = server-cert.pem
key = server-key.pem
CAfile = ca-cert.pem
verify = 3
sslVersion = all
options = NO_SSLv2
options = NO_SSLv3
options = NO_TLSv1
options = NO_TLSv1.1

[ABC-1]
accept = 12345
connect = localhost:11881
  1. 我的配置错了吗
  2. 我是否在服务器端和客户端都缺少配置
  3. 如果我关闭了verify,verify=0,则我可以连接

当我执行“openssl s_客户端-连接本地主机:10043-tls1_2”时,我从stunnel收到此错误

CONNECTED(00000003)
write:errno=104

stunnel日志:

2021.11.01 08:17:05 LOG3[14538:140387789453056]: SSL_accept: 140890C7: error:140890C7:SSL routines:ssl3_get_client_certificate:peer did not return a certificate

共有1个答案

邢俊悟
2023-03-14

我不熟悉Nginx配置,所以我不知道你是否正确。但是我能看出你在考试中做错了什么。已成功测试不允许连接未经身份验证的客户端。OpenSSL错误并不总是清晰的,但是在这种情况下,来自服务器的消息相当清晰:

ssl3\u获取\u客户端\u证书:对等方未返回证书

您已将服务器配置为需要客户端身份验证。但是客户端没有发送证书,因此无法进行客户端身份验证,并且服务器通过关闭连接拒绝了连接尝试。(TLS客户端身份验证是这样工作的:客户端发送一个证书,然后发送一个签名,证明它知道相应的私钥。)客户端上的错误是“对等端重置连接”。

您需要将签名证书和私钥传递给客户端。

openssl s_client -connect localhost:10043 -tls1_2 -cert client_cert.pem -key client_key.pem
 类似资料:
  • 我想写我的第一个JavaFX 8应用程序(用e(fx)clipse等做我的第一个实验)。),并对平台独立性有一些担忧。 JavaFX 8是Oracle JRE的一部分,Oracle JRE是Windows上使用最多的JRE。因此,我真的不打扰这里,因为JavaFX将安装在几乎所有运行Java8的Windows机器上。 但是在Ubuntu和其他*nix上,OpenJDK经常被用作Java发行版。由于

  • 关于Spring WebFlow WebClient的小问题,尤其是如何配置一个使用TLSv1.2发送出站请求的问题。 我的应用程序是Spring WebFlow 2.4.2,其中启用了HTTP/2、SSL、mTLS和TLSv1.3。 注意它是TLSv1。3,而不是设置上的TLSv1,2。 创建WebClient实例时: 并使用它向TLSv1发送请求。3启用服务器,工作正常,非常开心。 但是,我需

  • 问题内容: 我有一个库在运行时设置和配置log4j(没有log4j.properties或log4j.xml)。我已经定义了一个名为MyLoggerFactory的类,并且我希望它是第一个使用spring初始化的bean。我已经看到spring已经提出了一个支持初始化顺序的问题,但是我想知道是否有一种方法可以将bean标记为spring容器初始化的第一个bean? 问题答案: 你的选择是: 使用批

  • 问题内容: 我是Elasticsearch的新手,但我非常喜欢。我唯一找不到也无法完成的事情是确保生产系统的Elasticsearch安全。我在elasticsearch之前阅读了很多有关使用nginx作为代理的信息,但是我从未使用过代理,也从未使用过代理。 这是在生产系统中确保elasticsearch的典型方法吗? 如果是这样,是否有任何教程或不错的读物可以帮助我实现此功能。我真的很想在我们的

  • 我已经安装了Visual Studio2013,当我运行我的应用程序时,我得到了下面的错误。 我不知道在哪里初始化这个对象。 怎么办? 这是给AlumCloud的

  • 为了解决这个问题,我已经用尽了我的能力来研究和实验。我尝试过信任管理器、ssl套接字工厂、主机名验证器、方案注册表、ssl上下文修改等。