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 / 问题 / 845141
Accepted
johnymachine
johnymachine
Asked: 2017-04-19 11:38:14 +0800 CST2017-04-19 11:38:14 +0800 CST 2017-04-19 11:38:14 +0800 CST

当应用程序充当客户端时,将证书放在 Tomcat 的什么位置?

  • 772

对于初学者,我为 https 配置了我的 Tomcat8,并在连接器 xml 文件中链接了有效的证书。

像这样的东西:

    <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           SSLEnabled="true" maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" enableLookups="false" keyAlias="https"
           keystoreFile="C:\Program Files\Apache Software Foundation\Tomcat 8.0\conf\keystore.jks"
           keystorePass="changeit"/>

但我需要我的网络应用程序作为客户端连接到具有有效证书的第三方数据提供商。我把这个额外的证书放在哪里?当我为连接器放入密钥库时,“https”证书不是第一个证书,它会破坏东西。我可能可以用keyAlias连接器中的属性来解决这个问题......

但是...连接器密钥库的应用范围是否广泛?这种设置的最佳选择是什么?

这篇文章几乎总结了我的选择,选择哪一个?最好的选择似乎是将带有两个证书的密钥库传递给 JVM,但是如何告诉连接器使用哪个证书?

编辑:

根据建议,我编辑了我的连接器和密钥库,如下所示: 密钥库

现在我得到:

Wrapped javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException:
PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
Cause: sun.security.validator.ValidatorException: PKIX path building 
failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target]
ssl
  • 2 2 个回答
  • 11299 Views

2 个回答

  • Voted
  1. chloesoe
    2017-04-19T11:59:01+08:002017-04-19T11:59:01+08:00

    在我们的环境(tomcat7)中,如果我们使用 java 密钥库,那么我们的连接器如下所示:

    <Connector SSLEnabled="true"
        acceptCount="100"
        connectionTimeout="20000"
        executor="tomcatThreadPool"
        keyAlias="tomcat"
        keystoreFile="${catalina.base}/conf/tomcat.keystore"
        keystorePass="changeme"
        maxKeepAliveRequests="15"
        port="443"
        protocol="org.apache.coyote.http11.Http11Protocol"
        redirectPort="8443"
        scheme="https"
        secure="true"/>  
    

    区别是${catalina.base}(在我们的例子中/opt/tomcat/)而不是 ${user.home}/, 和你提到的keyAlias.

    如果要将密钥导入密钥库,可以这样做(当 tomcat 是客户端在 ADFS 进行身份验证时,我们使用它):

    keytool -importcert -file cert.cer -keystore tomcat.keystore -alias myalias
    

    我认为使用密钥库,${catalina.base}您keyAlaias应该能够解决您的问题。

    • 1
  2. Best Answer
    johnymachine
    2018-01-20T02:20:08+08:002018-01-20T02:20:08+08:00

    最后,我创建了一个包含所有必要证书(密钥)和别名的密钥库(在 Windows 上使用密钥库资源管理器)。然后我填写了 keystore 和 trustore 作为 java VM 启动参数:

      -Djavax.net.ssl.keyStore=%KEYSTORE% 
      -Djavax.net.ssl.keyStorePassword=changeme
      -Djavax.net.ssl.trustStore=%TRUSTSTORE% 
      -Djavax.net.ssl.trustStorePassword=changeme
    

    在 tomcat 连接器中使用相同的密钥库,并为 HTTPS 使用适当的 keyAlias。

    调试时启用-Djava.net.debug=ssl也很有帮助。

    • 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