java - 使用证书 .cer 在 Tomcat 上安装 SSL
问题描述
我的问题是是否可以将 SSL 添加到仅使用.cer文件安装的 Tomcat 7 的 Windows 服务器。
我有一个客户端,它在你的应用程序中使用 SSL 和 ISS,每当你需要在你的 ISS 服务器上安装 SSL 时,只安装这个.cer
文件:但是当我用 Tomcat 为它做了一个应用程序时,我需要用我要求的 HTTPS 保护那个应用程序一个证书,我发送了这个 .cer 文件。
我已经尝试生成 .JKS 文件并以某种方式将其添加到 Tomcat 中,但没有成功。前任:
keytool -import -alias root -keystore example.jks -trustcacerts -file certificate.cer
有了这个,我生成了 jks 文件并将其映射到 tomcat,它碰巧它不起作用。我知道 Tomcat 设置很好,因为我做了一个使用 genkey 生成文件的测试,它返回给我一个 .keystore 文件并且它可以工作。
编辑:
server.xml 中的连接器:
<Connector
protocol="org.apache.coyote.http11.Http11NioProtocol"
port="443"
maxThreads="200"
scheme="https"
secure="true"
SSLEnabled="true"
keystoreFile="C:/path/example.jks"
keystorePass="password"
clientAuth="false"
sslProtocol="TLS"
keyAlias="root" />
我应该以其他格式申请此证书吗?
有没有人经历过这个,你能给我一些提示吗?
谢谢你。
解决方案
回答您的问题:单个 CER 文件通常不足以在 Tomcat 或任何其他 Web-/应用程序服务器中正确配置 HTTPS 连接器。
不确定这是如何在 IIS 中配置的,但您总是需要一个私钥/密钥才能使用 SSL。
基本上使用签名证书(非自签名)时的标准流程是这样的:
生成私钥/密钥
$ keytool -genkey -keystore tomcat.jks -alias tomcat -keyalg RSA -keystore tomcat.jks -dname "CN=<hostname>"
为此密钥生成证书签名请求
$ keytool -certreq -keystore tomcat.jks -alias tomcat -file tomcat.csr
将此签名请求(CSR 文件)提交给签名机构,您将获得签名证书(CER 文件)作为回报
$ keytool -gencert -keystore root-ca.jks -alias root -infile tomcat.csr -outfile tomcat.cer -rfc
此证书与签名机构的证书一起导入您的密钥库
$ keytool -import -keystore tomcat.jks -file my-root-ca.cer -trustcacerts -alias my-root-ca $ keytool -importcert -keystore tomcat.jks -alias tomcat -file tomcat.cer
现在该tomcat.jks
文件可以在 Tomcat 中用作 HTTPS 连接器的密钥库。
没有关于您的certificate.cer
文件在问题中包含什么的信息。要使用 keytool 检查内容,您可以使用此命令
$ keytool -printcert -file certificate.cer
在我上面的示例中,输出如下所示:
Owner: CN=<hostname>
Issuer: CN=My-Root-CA, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
Serial number: 222f266a
Valid from: Sat Aug 25 12:41:01 CEST 2018 until: Fri Nov 23 11:41:01 CET 2018
...
如果需要,也许您可以将输出添加到您的问题中以获得更多帮助。
推荐阅读
- oauth - 有没有办法为 botframework 中的 SingleSignOn (SSO) 生成令牌以访问同一租户下的多个资源
- c# - 如果 nuget 已作为 nuget 依赖项安装,但它在您的项目中不可见,如何安装它?
- angular - 如何在 Angular 中进行基于角色的路由?
- javascript - 无法正确渲染项目卡。Reactjs Gatsbyjs Graphql
- javascript - 有没有办法在选项(复选框)打开时单击多个复选框,而当它关闭时,您一次只能选择一个?
- java - 类构造函数中的抽象方法
- apache-spark - 如何使用 Java/Scala 将 kafka 消费者输出附加到 HDFS 中的文件(镶木地板)?
- c# - 带有 ORACLE 查询的 OleDbCommand 不更新表
- python - 如何计算满足谓词的像素值?
- python - 在 Python 中转换时间列表的问题?