这类似于将PEM导入Java密钥存储。但问题的答案是使用OpenSSL进行转换,并使用工具将其导入文件系统上的密钥存储。
我试图使用一个格式良好的X509证书作为信任锚:
static String CA_FILE = "ca-rsa-cert.pem";
public static void main(String[] args) throws Exception
{
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(new FileInputStream(CA_FILE), null);
TrustManagerFactory tmf = TrustManagerFactory
.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(ks);
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, tmf.getTrustManagers(), null);
// Redirected through hosts file
URL url = new URL("https://example.com:8443");
HttpsURLConnection connection = (HttpsURLConnection) url
.openConnection();
connection.setSSLSocketFactory(context.getSocketFactory());
...
}
当我试图运行该程序时,我得到一个错误:
$ java TestCert
Exception in thread "main" java.io.IOException: Invalid keystore format
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:650)
at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55)
at java.security.KeyStore.load(KeyStore.java:1214)
at TestCert.main(TestCert.java:30)
我还尝试了KeyStore ks=KeyStore。getInstance(“PEM”)
和
getInstance(“X509”)
,但它们也不起作用。
我知道Java支持PEM和DER编码的证书,因为这是web服务器发送给客户机的。但是,
KeyStoreType
似乎都不符合我的需要,所以我怀疑我没有为此使用正确的API。
我希望直接使用它们而不将它们导入长寿命的
密钥库
的原因如下:
有数百个PEM证书要测试
- 证书在我的文件系统上
- 从文件系统使用证书匹配我的工作流
- 我不想使用
openssl
或keyool
- 我不想执行密钥存储维护
on如何在文件系统上获取格式良好的PEM编码证书并直接使用它?
我在Set certificate for KeyStore尝试以另一种方式执行此操作时找到了答案。信任的认证尝试?。它基于Vit Hnilica在从密钥库加载证书时的回答。我将用这个答案来回答这个问题,因为大多数堆栈溢出答案都是以“使用openssl
转换”开始的,然后使用keytool
。。。".
String CA_FILE = ...;
FileInputStream fis = new FileInputStream(CA_FILE);
X509Certificate ca = (X509Certificate) CertificateFactory.getInstance(
"X.509").generateCertificate(new BufferedInputStream(fis));
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(null, null);
ks.setCertificateEntry(Integer.toString(1), ca);
TrustManagerFactory tmf = TrustManagerFactory
.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(ks);
...
问题内容: 这类似于将PEM导入Java密钥存储区。但是问题的答案使用OpenSSL进行转换和使用工具将其导入文件系统上的密钥存储中。 我正在尝试使用格式良好的X509证书作为信任锚: 当我尝试运行程序时,出现错误: 我也尝试了和,但它们也不起作用。 我知道Java支持PEM和DER编码的证书,因为这是Web服务器发送给客户端的内容。但是所有的似乎都不符合我的需求,因此我怀疑我没有为此使用正确的A
在Android上安装系统CA证书 从Android 7开始,除非将应用程序配置为使用用户证书,否则它们将忽略用户证书。由于大多数应用程序未明确选择使用用户证书,因此我们需要将mitmproxy CA证书放置在系统证书存储中,以避免不得不打补丁我们要监视的每个应用程序。 请注意,应用程序可以决定忽略系统证书存储,并维护自己的CA证书。在这种情况下,您必须修补该应用程序。 1.先决条件 来自Andr
问题内容: 我已经在debian’s中安装了一个自签名的root ca cert并使用安装了它们。在这一点上很高兴,也很高兴,但是python2和python3请求模块坚持认为对证书不满意。 python2: python3 为什么python会忽略系统ca-certificates捆绑包,以及如何集成它? 问题答案: 从http://codingdict.com/questions/664 为了
我已经将一个自签名的根ca证书安装到debian的中,并使用安装它们。此时,true|gnutls-climysite.local感到高兴,true|openssls_client连接mysite.local:443感到高兴,但是python2和python3请求模块坚持认为它对证书不满意。 蟒蛇2: 蟒蛇3
也许我会在这里找到帮助。我想在spring boot应用程序上启用SSL。我的配置如下: 服务器:端口:8999 SSL:enabled:true key-store:classpath:keystore.jks key-store-password:mypass key-password:mypass 问题是我的密钥库。我已将*crt文件导入别名为“tomcat”的密钥存储库: 但是,我仍然无法
我有一个包含证书、私钥和信任链的.pem文件,以及使用openssl pkcs12-export从中生成的.p12文件: < code > OpenSSL pkcs12-export-out file . p12-in file . PEM-inkey file . PEM-passin pass:password-passout pass:password 我的PEM文件结构: 我正在使用此cu