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 / 问题 / 964441
Accepted
thxmike
thxmike
Asked: 2019-04-25 09:07:35 +0800 CST2019-04-25 09:07:35 +0800 CST 2019-04-25 09:07:35 +0800 CST

Crucible Fisheye 服务器的 TLS 设置

  • 772

在过去的几天里,我们一直在尝试使用 TLS 设置来设置 Fisheye。我们已经完成了使用公司内部 CA 设置 TrustStore 并使用主机级别证书设置单独密钥库的过程。然后,我们使用排除和包含协议的 ssl 设置更新了 config.xml 文件。这是这样的:

<web-server>
 <http bind=":80"/>
 <ssl truststore="/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/cacerts"
 keystore="/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/hosts.jks" 
 keystore-password="****" 
 bind=":443" truststore-password="*****">

<proxy-info/>

<excludeProtocols>
  <protocol>SSLv1</protocol>
  <protocol>SSLv2</protocol>
  <protocol>SSLv3</protocol>
  <protocol>TLSv1</protocol>
  <protocol>TLSv1.1</protocol>
</excludeProtocols>
<includeProtocols>
  <protocol>TLSv1.2</protocol>
</includeProtocols>
</ssl>
</web-server>

经过测试,我们在浏览器中不断收到以下错误。

在此处输入图像描述

由于我们使用的是最新版本的 Chrome,我怀疑这与 Web 服务器使用的密码或密码套件有关。但是,我找不到任何关于如何为 fisheye config.xml 设置它们的文档。我发现了一些使用反向代理服务器的插件,但是,这不是我们的选择。我还找到了一篇与密钥库类型相关的文章,但这对我们没有帮助。如果有任何关于如何在 config.xml 文件中设置密码或密码套件的文档。这将对我们有很大帮助。

如果这需要直接对 apache 进行更改,我们也对此持开放态度。

最后,如果这是发布此类问题的错误论坛,请告诉我们,我们会将其移至正确的论坛。

2019 年 4 月 23 日更新:Tim Brigham,感谢您的指导,

在运行以下命令时:

openssl s_client -connect fisheyetest.us.corp:443 -tls1_2

我们收到以下输出:

CONNECTED(00000005)
140735531881416:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:/BuildRoot/Library/Caches/com.apple.xbs/Sources/libressl/libressl-22.50.3/libressl/ssl/s23_clnt.c:541:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 318 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
---

看来协商没有得到密码并且在尝试使用 SSLv3 时失败。有没有办法改变它。

更新:2019 年 4 月 25 日在昨晚和今天猛烈抨击这件事之后,我一直没能取得太大进展。这是我尝试过的: - 从 config.xml 文件中删除包含和排除的协议 - 检查密钥库的权限。- 查看日志(与 TLS 或 SSL 相关的错误或与密钥库或信任库相关的错误) - 将密钥库类型从 JKS 更改为 pkcs12,反之亦然

在后一步中,我唯一能得到的是一条略有不同的错误消息: 在此处输入图像描述

使用 openssl 命令提供了相同的确切错误。如果我删除 -tls1_2 参数,它也会这样做。

我被这个难住了。我真的很惊讶这是如此困难。任何额外的建议将不胜感激。

ssl
  • 3 3 个回答
  • 1020 Views

3 个回答

  • Voted
  1. Tim Brigham
    2019-04-25T09:23:46+08:002019-04-25T09:23:46+08:00

    在您执行任何其他操作之前,您需要检查您的实例实际提供的密码。有几种方法可以做到这一点,使用openssl s_client 或 nmap或者我更喜欢使用Wireshark 来捕获 SSL 握手

    一旦您确切地确定了您提供的内容,就应该很容易看出您的连接失败的原因。

    编辑:根据您的输出,您没有提供服务器证书。它应该几乎在“已连接”输出下方列出。我建议暂时关闭所有 excludeprotocol 条目,然后找出为什么没有提供您的证书。它可能像密钥库的权限或 / 密钥库的格式 / 需要传入证书名称一样简单。

    • 2
  2. Best Answer
    thxmike
    2019-04-26T15:34:55+08:002019-04-26T15:34:55+08:00

    3天后我能够弄清楚。啊!。我必须将整个证书链包含在 p12 文件中,然后以非 pkcs12 格式导入密钥库。在信任库中有我的 ca 引用是不够的。这是我用来让它工作的命令

    首先,我使用以下命令生成了一个组合的 pkcs12 格式文件 (cert.p12)。

    openssl pkcs12 -export -out cert.p12 -in host.pem -inkey key.pem -CAfile cacerts_root.pem -caname root -name jetty -certfile cacerts_int.pem
    

    二、新建一个带有pkcs12格式文件的store:

    keytool -importkeystore -deststorepass ***** -destkeypass ***** -destkeystore /path/to/jks-file/host.p12 -srckeystore cert.p12 -srcstoretype PKCS12 -srcstorepass **** -alias jetty
    

    最后,我使用适当的设置更新了 config.xml 文件:

    <web-server>
    <http bind=":80"/>
    <ssl truststore="/path/to/trust-file/cacerts"
    truststore-password="*******"
    keystore="/path/to/jks-file/host.p12"
    keystore-password="********" bind=":443"><proxy-info/>
    </ssl>
    </web-server>
    

    重新启动,它出现了。这是一个巨大的痛苦。没有日志,没有错误,文档方面也没有太多。 

    我尝试了 openssl 命令

    openssl s_client -connect my.web.site:443
    

    但这没有帮助。它一直告诉我:

    No client certificate CA names sent 
    

    必须有一些更好的工具来帮助诊断这些问题,或者 Atlassian / Jetty / Tomcat 应该创建这个工具。 

    谢谢

    • 0
  3. Mario
    2021-03-11T06:11:15+08:002021-03-11T06:11:15+08:00

    我们在非常安静的码头遇到了同样的问题。

    最终解决方案是:JKS 信任库必须包含与 JKS 信任库本身具有相同密码的密钥(私有/公共)。

    • 0

相关问题

  • 如何使用 Tomcat 5.5 更新 SSL 证书

  • 为 IIS6 自行生成 SSL 证书?

  • plesk 上的域和子域 ssl 访问

  • 如何设置 SSL 邮件服务器?

  • 如何通过 SVN 命令行接受 SSL 证书?

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