标签: ssl-certificate-errors

警报“SSL3_READ_BYTES:sslv3 警报错误证书”是否表明 SSL 失败

运行以下命令时 openssl s_client -host example.xyz -port 9093

我收到以下错误:

139810559764296:error:14094412:SSL routines:SSL3_READ_BYTES:sslv3 alert bad certificate:s3_pkt.c:1259:SSL alert number 42
39810559764296:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:184:
Run Code Online (Sandbox Code Playgroud)

但最后我收到"Verify return code: 0 (ok)"消息。

我的问题是上述警报表示什么,以及 SSL 是否真的成功。

SSL handshake has read 6648 bytes and written 354 bytes
New, TLSv1/SSLv3, Cipher is AES128-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol  : TLSv1.2
Cipher    : AES128-SHA
Session-ID: xx
Session-ID-ctx:
Master-Key: xx
Key-Arg   : None
Krb5 Principal: None
PSK identity: None …
Run Code Online (Sandbox Code Playgroud)

ssl openssl ssl-certificate ssl-certificate-errors

24
推荐指数
1
解决办法
10万
查看次数

双向 SSL 错误 - 400 仅针对客户端证书的 SSL 证书错误

我正在尝试使用由中间 CA 签名的 SSL 证书(用于服务器和客户端)配置双向 SSL。这是我在本教程之后所做的。

服务器 - nginx 应用程序

Nginx 配置了 SSL 证书(由中间 CA 签名)。

server {
  listen 443;
  server_name app-ca.test.com;
  ssl on;

  ssl_certificate /root/ca/intermediate/certs/app-plus-intermediate.pem;
  ssl_certificate_key /root/ca/intermediate/private/app-ca-interm-ca.test.com.key.pem;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers  HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers   on;

  # I have also tried adding the Intermediate CA cert in vain
  # ssl_client_certificate /root/client_rootca_intermediate.crt;
  ssl_client_certificate /root/client_rootca.crt;
  ssl_verify_client on;

  location / {
      root /usr/share/nginx/massl;
      index index.html index.htm;
  }
}
Run Code Online (Sandbox Code Playgroud)

客户端 - curl 或 OpenSSL s_client

我有一个由其他一些中间 CA 签名的客户端证书,但失败了 400 The SSL certificate …

ssl ssl-certificate ssl-certificate-errors

15
推荐指数
1
解决办法
4万
查看次数

带有签名证书的 SSL_ERROR_NO_CYPHER_OVERLAP 错误

我的公司向默认使用 http 的客户提供了一个基于 Tomcat/MySQL 的应用程序。应客户的要求,我通过创建自签名证书使其能够使用 https。使用自签名证书时,这会受到预期的浏览器错误的影响。

经过渗透测试,他们决定我们需要禁用一些已弃用的 ssl 协议和密码,因此我将 tomcat server.xml 中的 ssl 连接器修改为如下所示:

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
    maxThreads="150" scheme="https" secure="true"
    clientAuth="false" sslProtocol="TLS" sslEnabledProtocols="TLSv1.2,TLSv1.1" ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_WITH_AES_128_GCM_SHA256"
    keystoreFile="/path/to/keystore/file"
    keystorePass="password" />
Run Code Online (Sandbox Code Playgroud)

这满足了渗透测试,该应用程序继续在所有三个主要浏览器(Chrome、Firefox 和 IE)中运行。但是,渗透测试也表明我们最好不要使用自签名证书,因此,按照这些 指南,我创建了一个 CSR 并让客户创建了一个签名到其内部域的证书(服务器可以通过以下方式访问)几个不同的 URL,因此需要使用 SAN 创建 CSR)。

我将证书添加到新的密钥库并相应地修改了 server.xml 文件中的路径。现在,当我尝试连接时,出现以下错误(这是来自 Firefox,但所有浏览器都会产生类似的错误):

安全连接失败

连接到 172.31.1.36:8443 期间发生错误。无法与对等方安全通信:没有通用的加密算法。错误代码:SSL_ERROR_NO_CYPHER_OVERLAP

由于无法验证接收到的数据的真实性,因此无法显示您尝试查看的页面。请联系网站所有者以告知他们此问题。

我的理解是证书不控制应该使用什么密码或协议,所以我不明白为什么会发生这种情况。这是我在生成 CSR 时犯的错误还是客户端在生成证书时犯的错误?

-编辑-

我似乎到处都在出错。如果我尝试将密钥导入密钥库,我会得到以下任一信息:

cat <keyfile> | openssl  pkcs12 -export -out <keystore>.p12
Enter pass phrase:
unable to load certificates
Run Code Online (Sandbox Code Playgroud)

或这个:

keytool -importkeystore -srckeystore <keyfile> -srcstoretype pkcs12 -destkeystore <keystore>.jks
Enter destination …
Run Code Online (Sandbox Code Playgroud)

tomcat ssl-certificate ssl-certificate-errors

5
推荐指数
1
解决办法
1万
查看次数

SSL 问题“对等方的证书颁发者已被标记为不受用户信任。”

我们有一个面向公众的开发服务器,需要 SSL 来实现特定功能。

然而,以任何形式使用 SSL 的一切都会返回

curl: (60) Peer's certificate issuer has been marked as not trusted by the user.
Run Code Online (Sandbox Code Playgroud)

这不是“好吧,在 yum 上使用 ssl-verify=false,或者在curl 请求上使用 --insecure”的问题。

我意识到我可以在这两个电话上这样做。但最终 - 我必须能够使用 SSL,因为我们使用这些服务器进行的开发需要它。

CA 似乎已经过时了。我已尝试以下 https://access.redhat.com/solutions/1549003

我尝试过自己导入 cacert.pem 文件(不过我承认,我在这里缺乏知识,所以可能我做错了)

我已经检查了服务器上的日期/时间,以确保这不是问题。

我无法让“网络管理员”(宽松使用的术语,因为他将是第一个承认他对 Linux 完全一无所知的人 - 纯微软)甚至不关心在这台机器上重新安装 Centos,所以我需要找到一个解决这个问题。

任何帮助,将不胜感激。以下是我们在尝试执行 yum、curl 和运行 certbot --apache 等操作时得到的一些示例

百胜餐饮集团

[root@localhost work]# yum reinstall mc
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Could not get metalink https://mirrors.fedoraproject.org/metalink?repo=epel- 
7&arch=x86_64 error was
14: curl#60 - "Peer's certificate issuer has been …
Run Code Online (Sandbox Code Playgroud)

ssl centos centos7 ssl-certificate-errors

5
推荐指数
1
解决办法
7万
查看次数

无法获取 cURL 或 wget 来验证某些 SSL 证书

我注意到我们使用 cURL 的链接检查器越来越频繁地无法验证 SSL 证书。我正在努力追查到底。

例如,https: //www.bgetem.de/ 在我的 Windows 7 机器上的每个浏览器(IE 11、Firefox、Opera、Chrome)上都可以正常打开,但在我的 CentOS 6 和 Ubuntu 16.04 上的 cURL(和 wget)不能验证证书。

这是来自 CentOS (Version curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2) cURL 的详细输出

* About to connect() to www.bgetem.de port 443 (#0)
*   Trying 193.104.3.166... connected
* Connected to www.bgetem.de (193.104.3.166) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* Peer's certificate issuer is not recognized: 'CN=COMODO RSA Domain Validation Secure Server …
Run Code Online (Sandbox Code Playgroud)

ssl wget curl ssl-certificate-errors

4
推荐指数
1
解决办法
7650
查看次数

无法使用 SSL 保护子域

我正在尝试保护一个子域:

bitbucket.kl.company.com
Run Code Online (Sandbox Code Playgroud)

该证书适用于 *.company.com。所以我得到一个错误:

bitbucket.kl.company.com uses an invalid security certificate. The certificate is only valid for the following names: *.company.com, company.com, bitbucket-mirror.company.com Error code: SSL_ERROR_BAD_CERT_DOMAIN
Run Code Online (Sandbox Code Playgroud)

令人费解的是,有些浏览器并没有抱怨,而是按预期加载页面。我的证书有问题吗?我可以专门为 bitbucket.kl.company.com 订购证书,而不使用 *.company.com 吗?

ssl openssl ssl-certificate ssl-certificate-errors

4
推荐指数
1
解决办法
172
查看次数

openssl 不断创建 v1 证书而不是 v3

地狱大家,

所以我试图为我的域创建一个自签名证书,由于某种原因,openssl 不断为我的服务器创建 V1 证书而不是 V3,这导致浏览器在我在那里时不会给我“绿色锁”。

知道为什么会发生这种情况。

这是我的 server.crt 文件:

Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number:
            30:61:e6:70:fd:e4:c9:f6:23:ed:e1:1c:cd:8c:c9:9e:68:7b:01:cf
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = CA, ST = ON, L = Toronto, O = Boss Insights, OU = DevOps, CN = Boss Insights, emailAddress = ghaith@sublimeapp.com
        Validity
            Not Before: Aug 13 14:33:12 2019 GMT
            Not After : Aug 10 14:33:12 2029 GMT
        Subject: C = CA, ST = ON, L = Toronto, O = Boss Insights, OU = DevOps, CN = …
Run Code Online (Sandbox Code Playgroud)

openssl ssl-certificate certificate-authority self-signed-certificate ssl-certificate-errors

4
推荐指数
1
解决办法
2万
查看次数

每个虚拟主机的 nginx ssl 配置

我正在将配置从单个主机切换到 nginx 服务器上的多个虚拟主机。在我更改之前,ssl 可以正常工作,但是在添加了几个虚拟主机后,每个虚拟主机都有唯一的域名 - 因此 - 不同的证书,ssl 不想工作。

我原来的配置是:

# fragment of nginx.conf file
http {
    # ...
    ssl_certificate_key /path/to/privkey.pem;
    ssl_certificate     /path/to/fullchain.pem;
    ssl_dhparam         /path/to/dhparam;
    # ...
}
Run Code Online (Sandbox Code Playgroud)

因此,这是 nginx 服务器的单个证书。

添加几个虚拟主机后,我希望他们为他们的域提供他们自己的、正确的证书。所以我从主nginx.conf文件中删除了所有与 ssl 相关的参数,并将它们添加到虚拟主机文件中,如下所示:

# fragment of sites-enabled/my.server.com file
server {
   listen 443 ssl;
   root "/var/www/my.server.com/";
   server_name my.server.com www.my.server.com;
   location / {
       try_files $uri $uri/ /index.html;

   }
   ssl_certificate_key /path/to/my/server/com/privkey.pem;
   ssl_certificate     /path/to/my/server/com/fullchain.pem;
   ssl_dhparam         /path/to/my/server/com/dhparam;
}
Run Code Online (Sandbox Code Playgroud)

重新加载 nginx 后,我无法连接到这些虚拟主机:

# curl https://my.server.com 
curl: (35) gnutls_handshake() failed: The TLS connection was …
Run Code Online (Sandbox Code Playgroud)

ssl nginx ssl-certificate ssl-certificate-errors

3
推荐指数
1
解决办法
9006
查看次数

Chrome 116/117 ERR_SSL_PROTOCOL_ERROR 的 HTTPS 兼容性问题

ERR_SSL_PROTOCOL_ERROR由于某种原因,我的网站从 2 天起就出现错误。

已测试浏览器

  • Windows Chrome 117.0.5938.132:ERR_SSL_PROTOCOL_ERROR
  • 安卓 Chrome 117.0.5938.61:ERR_SSL_PROTOCOL_ERROR
  • Windows 火狐 118.0.1:好的
  • 边缘 117.0.2045.47:好的
  • 手头没有其他浏览器,但客户只抱怨 Chrome

网络服务器配置

是的,我的网络服务器已经过时,计划在几个月内迁移。

  • 证书有效(Sectigo)
  • Apache HTTPd 2.4.3
  • OpenSSL 1.0.1m

无法运行的网站是https://specto.ca

Apache HTTPd 配置原文

测试前的配置

[...]
<IfModule ssl_module>
    SSLRandomSeed startup builtin
    SSLRandomSeed connect builtin

    SSLStrictSNIVHostCheck off
</IfModule>
[...]
<VirtualHost 69.70.187.100:443>
    [...]
    ServerAlias specto.ca
    ServerAlias www.specto.ca
    [...]
    SSLEngine on
    SSLCertificateFile /home/.../ssl.crt
    SSLCertificateKeyFile /home/.../ssl.key
    SSLCACertificateFile /home/.../chain.crt
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

Apache HTTPd 配置正在运行

我测试后的配置

[...]
<IfModule ssl_module>
    SSLRandomSeed startup builtin
    SSLRandomSeed connect builtin

    SSLStrictSNIVHostCheck on

    SSLProtocol …
Run Code Online (Sandbox Code Playgroud)

openssl ssl-certificate apache-2.4 ssl-certificate-errors

3
推荐指数
1
解决办法
1万
查看次数

lighttpd 上的错误“SSL3_GET_CLIENT_CERTIFICATE:peer 没有返回证书”

我正在使用有效的证书,但无法获得客户端证书。lighttpd 服务失败并出现错误:

(connections-glue.c.200) SSL: 1 错误:140890C7:SSL 例程:SSL3_GET_CLIENT_CERTIFICATE:peer 没有返回证书

我的配置是这样的:

$SERVER["socket"] == ":443" {
            protocol     = "https://"
            ssl.engine   = "enable"
            ssl.disable-client-renegotiation = "enable"



            #server.name = "mywebsite.com"
            ssl.pemfile               = "/etc/lighttpd/ssl/mywebsite.com.pem"
            ssl.ca-file               = "/etc/lighttpd/ssl/mywebsite.com.csr"


            ssl.ec-curve              = "secp384r1"
            ssl.use-sslv2 = "disable"
            ssl.use-sslv3 = "disable"
            ssl.honor-cipher-order    = "enable"
            ssl.cipher-list           = "ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS"

            # HSTS(15768000 seconds = 6 months)
            #setenv.add-response-header  = (
            #   "Strict-Transport-Security" => "max-age=15768000;"
            #)

            #ask for client cert
            ssl.verifyclient.exportcert = "enable" 
            ssl.verifyclient.activate   = "enable" 
            ssl.verifyclient.username   = "SSL_CLIENT_S_DN_CN" 
            ssl.verifyclient.enforce    = "enable" 
            ssl.verifyclient.depth      = 3
        } …
Run Code Online (Sandbox Code Playgroud)

ssl lighttpd ssl-certificate ssl-certificate-errors

1
推荐指数
1
解决办法
2万
查看次数

如何诊断“CA证书太弱”错误,无论如何如何使用CA证书?

我必须使用使用自签名证书(来自 Ubuntu)的服务。我已将公司的 CA 添加到受信任列表 (Ubuntu)。之后“链中自签名证书”错误消失了,但现在我收到“CA证书太弱”错误。例如

curl -vvv https://someservicehost.net
 *   Trying 93.184.216.34:443...
 * TCP_NODELAY set
 * Connected to someservicehost.net (93.184.216.34) port 443 (#0)
 * ALPN, offering h2
 * ALPN, offering http/1.1
 * successfully set certificate verify locations:
 *   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
 * TLSv1.3 (OUT), TLS handshake, Client hello (1):
 * TLSv1.3 (IN), TLS handshake, Server hello (2):
 * TLSv1.2 (IN), TLS handshake, Certificate (11):
 * TLSv1.2 (OUT), TLS alert, bad certificate (554):
 * SSL certificate problem: CA certificate key too …
Run Code Online (Sandbox Code Playgroud)

ubuntu openssl curl ssl-certificate-errors

1
推荐指数
1
解决办法
6382
查看次数

证书没有已知的颁发者

我的一个站点上的 TLS (SSL) 证书昨天已过期。我获得了一个新的 - 并将其安装在网站上(在 nginx 下的 Debian 9 上运行)。现在,当我从 windows 或 mac 访问该站点时,证书得到正确处理并且一切正常。

同时,我有一项服务在同一台服务器上运行并连接到同一站点。自证书更新以来,此服务开始失败。尝试对此进行调试时,我意识到安装证书的系统本身不信任颁发者。使用 wget,我收到此错误:

证书没有已知的颁发者

使用 curl 我收到此错误:

SSL 证书问题:无法获取本地颁发者证书

这似乎指向系统上缺少 ca 证书。我试过跑步update-ca-certificatesdpkg-reconfigure ca-certificates. 两个过程都成功完成,但问题仍然存在。

以下是 Mac 上 Chrome 的证书详细信息:

在此处输入图片说明

我试图手动将根颁发者证书添加到 ca-certs 存储中update-ca-certificate,但是这导致了重复证书的警告。

我怎样才能解决这个问题?禁用证书检查不是一个选项;通过 HTTP 访问该站点也不是一种选择。

ssl debian ssl-certificate ssl-certificate-errors debian-stretch

0
推荐指数
1
解决办法
1029
查看次数