当前位置: 首页 > 知识库问答 >
问题:

如何使https://localhost:port在嵌入式Jetty中使用自签名证书?

杨晓博
2023-03-14

目标:我希望此url(https://localhost:8083)在我的本地计算机上使用我的自签名证书。

首先,我引用了这个url(https://gist.github.com/oslego/f13e136ffeaa6174289a),我所做的是:

$openssl genrsa-des3-out server.orig.key 2048

$openssl rsa-输入server.orig.key-输出server.key

$openssl请求-新建-密钥服务器.密钥-退出服务器.CSR

国家名称(2个字母代码)[AU]:

...

通用名称:localhost.ssl

$openssl x509-输入server.crt-输出keystore.PEM-输出PEM

$keytool-import-trustcacerts-alias testCert-file keystore.pem-keypass testpassword-keystore keystore.jks-storepass testpassword

$keytool-export-alias mykey-keystore keystore.jks-rfc-file truststore

$vim keystore.password//通过vim手动创建的keystore.password

但当我访问https://localhost:8083时,它不能与SSL一起工作。

然后,
我还创建了另一个证书

另外,我使用嵌入式Jetty,Java通过定义keystore.jks、truststore和keystore.password文件位置的配置文件正确读取所有信息。

共有1个答案

赫连子石
2023-03-14

(1)指示您执行genrsa加密操作,然后rsa删除加密操作,这很好地表明某人不知道他们在说什么,并且至少有10年没有阅读手册页。指示您执行req-new然后执行x509-req-signkey是一个极好的指示,表明某人不知道自己在说什么,并且至少有5年没有阅读手册页。我建议完全忽略任何网站或作者说那些事情。此外,x509-req-signkeyreq-new-x509输出的证书已经是PEM,不需要任何转换。

(2)您指出将名称转换放在/private/etc/hosts中,并且没有给出您正在使用的浏览器和/或其他客户端或中间件的任何线索,但我从未听说过任何客户端使用这样的文件来进行名称解析,除非您正在使用一个监狱或某种类型的容器,您没有提出问题。(几乎所有Unix系统都使用或可以使用/etc/hosts,但这并不相同。)

(3)你也不知道“不起作用”是什么意思。但是,如果这意味着握手失败,因为密码不匹配(并不总是这样识别),那无疑是因为您在Java密钥存储库中放置了证书,从而在SSL/TLS服务器需要私钥时只给了Jetty您的证书。这使得这个问题与https://stackoverflow.com/a/37423399/2868801中链接的多个问题重复,这些问题都解释了您需要使用OpenSSL pkcs12-export将证书和privatekey转换为pkcs12文件,然后使用或转换Java中的pkcs12文件,但细节略有不同。

(4)jww部分正确;当前的标准要求证书包含SubjectAltName(SAN)扩展,您应该这样做--使用req-new-x509而不是您所拥有的方法,这要容易得多,请参见(1)。但是到目前为止,只有Chrome强制执行了这一要求,所以一个正式过时的、仅带有subject.cn的证书实际上可以在其他客户机中工作--一旦您将他们设置为信任这个证书,这对于Selfsigned来说总是一个问题。

 类似资料:
  • 2.通过在文件中添加一些属性,在Spring Boot中启用HTTPS。 3.将HTTP重定向为HTTPS(可选)。我忽略了这部分。 但是当我启动我的应用程序时,我得到了这些错误: 非常感谢你的帮助。

  • 我正在写java web应用程序的扩展。我用maven覆盖插件将这个应用程序添加到扩展中,并使用主应用程序中的web.xml文件和webapp文件夹。我还想用jetty嵌入式服务器为我的扩展编写集成测试平台。我试过了

  • 问题内容: 我已经开始为API编写包装,该包装要求所有请求都通过HTTPS进行。我不想在开发和测试它时向实际的API发出请求,而是希望在本地运行自己的服务器来模拟响应。 我对如何生成创建HTTPS服务器并向其发送请求所需的证书感到困惑。 我的服务器看起来像这样: Pem文件是使用以下命令生成的: 一个请求看起来像这样: 通过此设置,我得到了,所以我认为我需要为该请求添加一个选项。 所以我的问题是我

  • 我正在将服务迁移到minikube上的kubernetes集群中,这些服务在加载时需要自签名证书,通过NodePort访问服务可以很好地工作,并需要浏览器中的证书(下图),但是通过入口主机访问(域在/etc/hosts中本地修改)为我提供了一个由Acme提供的kubernetes入口控制器伪造的证书,并且跳过了我的自签名证书,没有任何消息。 SSLs应该在应用程序中解密,而不是在入口中解密,并且t

  • 我正在使用Postman测试我的API。我正在使用自签名证书在我的应用程序中使用HTTPS。 打开HTTPS设置后,邮递员应用程序显示此错误 它显示了 错误:自签名证书 当我在邮递员设置中关闭SSL证书验证时,API调用运行完美。我尝试在邮递员应用程序中安装证书/密钥,但没有成功。 我想在postman中使用证书/密钥,以便可以使用SSL访问API。有什么办法吗?

  • 我想在JettyDistribution-9.2.9.v20150224上配置SSL 并将ssl和https模块配置为start.ini,Jetty工作正常。 但是,从keystore中提取的证书不能被浏览器信任。所以我想使用Openssl创建自签名证书 我的Openssl版本是0.9.8,我通过以下步骤生成keystore: 但是,这个TrustStore.KeyStore不能工作。Http工作