AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 837307
Accepted
Darren
Darren
Asked: 2017-03-10 08:47:02 +0800 CST2017-03-10 08:47:02 +0800 CST 2017-03-10 08:47:02 +0800 CST

带有签名证书的 SSL_ERROR_NO_CYPHER_OVERLAP 错误

  • 772

我的公司向默认使用 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" />

这满足了渗透测试,并且该应用程序继续在所有三种主要浏览器(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

或这个:

keytool -importkeystore -srckeystore <keyfile> -srcstoretype pkcs12 -destkeystore <keystore>.jks
Enter destination keystore password:
Re-enter new password:
Enter source keystore password:
keytool error: java.io.IOException: toDerInputStream rejects tag type 45

我让客户向我发送证书链,当我尝试导入时,我收到此错误:

keytool -import -trustcacerts -alias tomcat -file <certchain>.p7b -keystore <keystorefile>.jks
Enter keystore password:
keytool error: java.lang.Exception: Input not an X.509 certificate

我找到了一些关于如何将 pkcs 文件转换为 x.509 的解决方案,但后来我遇到了其他错误,所以我现在完全陷入困境。

tomcat ssl-certificate ssl-certificate-errors
  • 2 2 个回答
  • 13177 Views

2 个回答

  • Voted
  1. Best Answer
    Darren
    2017-03-14T02:17:57+08:002017-03-14T02:17:57+08:00

    所有问题的根本原因是证书格式错误。

    通过关注此处的信息,我发现证书实际上是 DER 格式。我将其转换如下:

    openssl x509 -inform der -in certfile.cer -out new_certfile.pem
    
    • 1
  2. F1Linux
    2020-04-29T03:49:21+08:002020-04-29T03:49:21+08:00

    错误消息有点像红鲱鱼。

    在为Webfig https访问配置 MikroTik 时,如果您只是创建和使用未经 CA 签名的证书,您将收到此错误。当浏览器看到未签名的证书时,它会吐出错误:

    “错误代码:SSL_ERROR_NO_CYPHER_OVERLAP ”

    不要钻进兔子洞去调查不兼容的密码或类似的东西:你只需要用 CA 签署你的证书,事情就会按预期工作。

    以下是MikroTik特定的清除错误的过程。

    警告:

    不要只是剪切粘贴:请用合理的值替换我的占位符;-)

    • “ CAyourDomain ”:将“yourDomain”替换为您组织的域
    • “ state ”:为居住在美国以外的人指定一个县
    • “ subject-alt-name ”:指定路由器的公共IP
    • “ ca-crl-host ”:再次指定路由器的公共IP
    • CA “ key-size ”:注意,使用“ 4096 ”可以最大化 CPU 并在签名时挂起精简配置的模型
    • 根据需要调整其他参数

    创建 CA:

    /certificate add name=CAyourDomain-template common-name=CAyourDomain country=GB days-valid=3650 key-size=4096 locality="Your City" organization="Your Organization" state=Hertfordshire trusted=yes unit="Technical Services" subject-alt-name="IP:XXX.XXX.XXX.XXX" key-usage=digital-signature,key-cert-sign,crl-sign;
    
    /certificate sign CAyourDomain-template ca-crl-host="XXX.XXX.XXX.XXX" name=CAyourDomain
    

    创建证书:

    /certificate add name=webfig-template common-name="webfig" country=GB days-valid=3650 key-size=4096 locality="Your City" organization="Your Organization" state=Hertfordshire trusted=yes unit="Technical Services" subject-alt-name="IP:XXX.XXX.XXX.XXX" key-usage=digital-signature,key-encipherment,data-encipherment,tls-server,tls-client;
    
    /certificate sign webfig-template ca=CAyourDomain name=webfig
    
    /certificate set webfig trusted=yes
    

    指定证书:

    现在“ webfig ”证书已经被 CA 签名了,你最终需要在这里指定它才能使用它:

    “ IP ”>“服务”并启用“ www-ssl ”并指定“ webfig ”证书创建和子网HTTPS访问是允许的

    • 0

相关问题

  • jvm性能调优技巧/资源?

  • 使 Jakarta 连接器与 IIS 一起工作时出现问题

  • 如何禁用tomcat缓存?我遇到了奇怪的静态文件问题

  • Hudson 无法在 tomcat5 中启动

  • Tomcat 6 HTTP 日志滚动和清除

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve