问题标签 [truststore]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
security - SSL 中如何使用信任库和密钥库?
使用 Java 创建 SSL 连接时,我们首先使用KeyStores和TrustStores初始化SSLContext。javax.net.ssl中的SSLContext有一个名为createSSLEngine()的方法来创建SSLEngine。因此,在为连接创建会话时,将使用创建的 SSLEngine。我的问题是在 SSL 协议的哪个点使用来自 KeyStores 和 TrustStores 的 keyManagers 和 TrustManagers?
提前致谢。
java - 如何使用 Apache CXF 从类路径加载信任库?
我正在使用 Apache CXF (v2.7.3) 通过 HTTPS 调用 SOAP 服务。我可以从文件加载信任库,但不能从类路径加载 - 我收到“无效的密钥库格式”错误。
我的 cfx.xml 文件中有这个配置:
我可以从文件加载信任库,但不能从类路径加载。我可以从异常中看出正在找到 truststore.jks 文件,但它是无效的。这是抛出异常的堆栈跟踪。
java - 在 Linux 浏览器(或 Linux 命令行)中为 Java 证书信任库导出 SSL 证书
背景:
我在使用带有 ColdFusion 9 的 Web 服务时遇到了一些麻烦(对等体未经过身份验证)。
首先,我将尝试将证书导入 ColdFusion 的底层 Java 密钥库。如果这不起作用,我将尝试使用 ColdFusion 的安全提供程序。
但我的问题更具体......
问题:
如何在 Chrome(或 Linux CLI)中导出证书(在正确的级别),以及以哪种格式?
细节
我已经看到了一些从浏览器导出证书的说明,但它们是针对 IE(旧版本)的,我更喜欢使用 Chrome,因为我在 Linux 上。
为了得到屏幕截图,下面,我:
- 单击 URL 旁边的锁定图标
- “连接”选项卡(显示“该网站的身份已通过 Thawte SSL CA 验证”)
- 点击“证书信息链接”
- “详细信息”选项卡
从那里,我可以在四个级别之一导出:
- 内置对象令牌:Thawte Premium Server CA
- 解冻主根 CA
- 解冻 SSL CA
- sb1.geolearning.com
哪一个合适?
此外,Adobe 的文档说“证书必须是可分辨编码规则 (DER) 格式的 X.509 证书。”,Chrome 的导出对话框提供以下选项:
- Base64 编码的 ASCII,单一证书
- Base64 编码的 ASCII,证书链
- DER 编码的二进制、单一证书
- PKCS #7,单一证书
- PKCS #7,证书链
- 所有文件
我假设“DER编码的二进制,单一证书”是合适的?
java - 信任过期的证书
我的客户端在与具有过期证书的 https 服务器通信时因以下错误而失败。当我们正在等待通过更新在服务器端修复它时,我想知道我们是否可以通过将过期的证书添加到我们自己的信任库来绕过这个错误?这使我们能够在等待证书更新时获得一些测试时间。
ssl - 与自定义密钥库 .jks 文件和密码的 SSL 连接并向 URL 发送请求
我需要使用自定义密钥库 .jks 文件和密码向 URL 发送请求。下面是一段代码。它不是很干净。我需要清理它:-) 我看到 ava.lang.NoSuchFieldError 异常。我不知道我在这里缺少什么:-/
............. //更多代码 }
public static KeyManager[] getKeyManagers(String keyStoreType, InputStream keyStoreFile, String keyStorePassword) throws Exception { KeyStore keyStore = KeyStore.getInstance(keyStoreType); keyStore.load(keyStoreFile, keyStorePassword.toCharArray()); KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); kmf.init(keyStore, keyStorePassword.toCharArray()); 返回 kmf.getKeyManagers(); }
我看到以下异常
java.lang.NoSuchFieldError: org.apache.http.impl.client.DefaultHttpClient.setDefaultHttpParams(DefaultHttpClient.java:175) 的 org/apache/http/protocol/HTTP.DEF_CONTENT_CHARSET org.apache.http.impl.client.DefaultHttpClient .createHttpParams(DefaultHttpClient.java:158) 在 org.apache.http.impl.client.AbstractHttpClient.getParams(AbstractHttpClient.java:448) 在 org.apache.http.impl.client.AbstractHttpClient.createClientConnectionManager(AbstractHttpClient.java:309) ) 在 org.apache.http.impl.client.AbstractHttpClient.getConnectionManager(AbstractHttpClient.java:466)
在 ClientConnectionManager 管理器 = httpclient.getConnectionManager();
你们能告诉我我在这里想念什么吗?
java - 导出的证书包含私人信息/实施自己的信任管理器?
我对 ssl 很陌生,但我设法在我的 java 应用程序上设置服务器和客户端认证。我使用 keytool 生成了密钥库和信任库。这很好用。
现在我正在寻找将新客户端证书添加到我的服务器信任库的方法,如果这样做,我的服务器将接受来自新客户端的连接。
我目前的计划是:
- 让客户打电话给我并请求启动程序
- 让客户端运行生成证书的小程序
- 让客户发送证书给我
- 现在我可以将证书添加到服务器信任库
听起来很简单,但是当您想到它时,可能会出错:
- 当客户向我发送证书时,有人可以拦截它。当我从密钥库导出证书时,生成的证书是否足以建立客户端连接?还是证书只包含公共信息,而“私人”信息是否仍在密钥库中?
- 在服务器端实现我自己的 TrustManager 以便我可以轻松管理受信任的客户端证书是否明智?这是一件很难做的事情,还是我应该在 keytool 周围添加一个小包装。
感谢您的想法!
java - 在 tomcat(一个 JVM)中为每个 webapp 使用不同的密钥库
我有一个带有许多 webapps 的 tomcat 实例。其中一些需要自己的独立密钥库才能通过SSL调用外部 Web 服务。到目前为止,我发现使用提供的密钥库的唯一方法是使用:
但是这种方式的问题是系统属性的范围是每个 java 进程,(tomcat 为所有 webapps 共享相同的 JVM),这会影响所有其他 webapps。正确的?
如何在我的 tomcat 实例中为每个 webapp 使用特定的密钥库并将其限制为特定的 Web 服务调用?
我使用 Axis(1) WS 客户端可能很重要。
java - 尝试连接到 https 网络服务时“收到致命警报:handshake_failure”
我想构建一个 Spring 3 (v 3.1.1.RELEASE) 应用程序(在 Java 1.6 上)来与使用我创建的自签名证书的 HTTPS Web 服务通信。我对如何设置我的信任库和基石感到困惑。使用我的自签名证书,我使用以下命令生成了一个梯形图...
然后我像这样配置了我的 Spring 应用程序……</p>
但是当我运行我的应用程序时,出现以下错误。我错过了什么?
internet-explorer - 在 IE 受信任的根中导入证书的不信任根 CA
我们遇到以下问题,有人可以帮忙吗?
在某些PC上,当用户访问我公司CA签署的网站时,IE会显示不受信任的证书页面。但是证书已经导入到 IE 信任根中
取消选中“检查服务器证书吊销”,然后没有警告页面。
要使用 certutil 验证证书,以下是消息。
certutil -verify -urlfetch test.cert
java - Android HttpClient 信任我的浏览器信任的每个证书
有没有办法访问我的浏览器/Java/“系统”在应用程序中信任的信任库/证书?
换句话说,如果我在https://test.domain.com下托管一个网站,并且用户选择信任服务器提供的证书(自己的 CA / 自签名),我希望我的应用程序在访问该服务器时能够识别用户选择在他的浏览器中完全信任此证书,因此也信任它。
我似乎只找到了解决方案:从资源/文件系统加载信任库或信任所有证书。
我最想要的是“Android.System.getTruststore()”之类的东西(简化以显示这个想法)或系统保存我可以在应用程序中访问的受信任证书的路径。
由于我远离专业人士,我什至不知道是否有一个存储所有这些证书的位置,或者是否可以从 3rd 方应用程序访问它^^。
我希望这个问题在某种程度上很清楚,并感谢任何提示!