问题标签 [pkix]

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.

0 投票
4 回答
69489 浏览

openssl - 使用 OpenSSL 以编程方式创建 X509 证书

我有一个 C/C++ 应用程序,我需要创建一个包含公钥和私钥的 X509 pem 证书。证书可以是自签名的,也可以是未签名的,没关系。

我想在应用程序中执行此操作,而不是从命令行。

哪些 OpenSSL 功能将为我做这件事?任何示例代码都是奖励!

0 投票
2 回答
3900 浏览

ssl - 无法使用 Nexus 通过 https/ssl 代理 Maven 存储库

我按照此页面上的说明导入服务器证书。

当我使用 时keytool -list,我可以看到证书实际上在密钥库中。如果我尝试导入.crt文件,keytool则会警告我密钥库已包含证书。

然后我更新wrapper.conf了两个 ssl 选项。重启后我可以在 Nexus 进程的命令行上看到它们。

但是当我尝试为远程服务器添加代理存储库时,我总是得到sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

我错过了什么?

0 投票
3 回答
8996 浏览

java - 在 java 中验证证书会引发异常 - 无法找到请求目标的有效证书路径

我有一个 Web 应用程序,需要客户端发送它的证书,并且服务器必须验证证书(即查看颁发者是否是有效的颁发者并存在于服务器的信任库中)。这是代码:

但我得到一个例外:

注意:
这里客户端发送的证书是 client.crt,用于签署 client.crt 证书的证书是密钥库“trustedca”中存在的 ca.crt。那为什么会给出这个例外呢?

0 投票
1 回答
1297 浏览

java - 尽管我明确设置了一个不验证任何证书的信任管理器,但为什么 Java 会尝试验证证书路径?

我有一个关于使用套接字和 Java 7 通过 SSL 进行简单通信的问题。

到目前为止,我已经创建了两个Runnable——一个用于服务器,一个用于客户端。最后,我想创建一个简单的测试,其中我的应用程序使用 SSL 将数据发送到模型服务器。服务器要做的就是接收客户端发送的字符串,将其与文件的内容进行比较,然后根据比较是否成功返回响应字符串。

但是,我被困在javax.net.ssl.SSLHandshakeException上,尽管我明确希望客户端通过身份验证!在客户端,我创建了一个不验证任何证书的信任管理器。在服务器端,设置this.sslServerSocket.setWantClientAuth(false)和/或this.sslServerSocket.setNeedClientAuth(false)也无济于事。出于测试目的,客户端和服务器都使用名为“keystore.ks”的相同密钥文件。

我用下面的箭头 (----->) 标记了异常发生的点。也许有人可以给我一个提示那里有什么问题!


这是我的 SSLServer 类:

这是我的客户类:

最后,输出:

0 投票
1 回答
387 浏览

java - 将 CertPathBuilder 和 PKIX 与非 X509 证书一起使用

我正在使用Java 中的Card Verifiable Certificates(使用 PrimeKey/EJBCA 的cert-cvc 库),它们是非 X.509 证书,但它们实现了java.security.cert.Certificate.

我想使用现有的链构建算法,即使用CertPathBuilder及其 PKIX 实现(在 Oracle/Sun 的安全提供商或 Bouncy Castle 中)来构建这些 CVC 证书的链。我目前坚持使用PKIXBuilderParameters我的一组信任锚,因为它显然需要 X.509 证书。

有没有办法在 PKIX 中使用非 X.509 证书?如果没有,有没有办法使用CertPathBuilder非 X.509 证书而不必实现我自己的自定义CertBuilderSpi

0 投票
1 回答
9248 浏览

java - 当 TrustManagerFactory 不是 TrustManagerFactory (Java)

我正在尝试向现有的 App-Server (TomCat) 产品添加一些额外的 JUnit 测试。我遇到了(现有和已部署的)自定义 TrustManager 的问题。这件事在生产中运行良好,但在 JUnit 期间,出现异常。

定制的 TrustManager 仅从路径加载密钥库,并隐式信任我们自己的公共证书。出于某种原因,在 JUnits 中使用 this 会导致以下行出现异常:

例外:

无论使用何种 Provider/Algorithm 组合(“SunX509”、.getDefaultAlgorithm() 等),都会发生此异常。

任何见解将不胜感激。

0 投票
2 回答
6227 浏览

c - 如何以编程方式从证书中提取信息?

我有一个生成的证书,但我希望能够从证书中提取信息,例如国家、有效性、公钥等。我必须将从证书中检索到的信息与我存储在 C 程序中的其他信息进行比较。

我知道如果我使用这样的功能,它会打印我的证书信息:

但我想要的只是这些信息的一部分。怎么做到呢?

谢谢

0 投票
6 回答
50789 浏览

c - 使用 OpenSSL API 以编程方式验证证书链

这与其他问题非常相似,但我看过的问题要么没有答案,要么没有完全问同样的问题。我有一个自签名 CA 证书,以及使用该 CA 证书签名的另外两个证书。我很确定证书是正确的,因为“openssl verify”有效:

(以上是凭记忆,我面前没有,所以可能有点偏)。

现在我想以编程方式验证证书。我有一个带有以下伪代码的实用程序函数:

我的问题是上面的代码总是返回“找不到颁发者证书”。我做错了什么?我相信我正在创建一个新存储,添加 cacert,创建一个新上下文,并将要验证的子证书添加到上下文中,并带有指向包含 CA 的存储的指针。我很明显做错了什么,但我不确定是什么。

有任何想法吗?

更新:我知道我可以将这些证书保存到磁盘并使用 X509_LOOKUP_file 或类似的东西。我正在寻找一种不会不必要地接触磁盘的解决方案。

0 投票
1 回答
763 浏览

encoding - openssl生成的CA中的Country Name字段编码为PRINTABLESTRING,其他字段为UTF8STRING

我正在使用以下命令生成带有 openssl 版本 1.0.1e 的 CA 证书:

在此过程结束时,我输入以下 DN 字段:

我将 ec_ca_cert.pem 证书转换为 DER 格式:

当我使用 HEX 编辑器编辑 ec_ca_cert.der 文件时,我可以清楚地看到 Country 字段被编码为 PRINTABLESTRING (Type=0x13),而所有其他字段 (Locality Name、Organization Name、Organization Unit Name、Common Name) 是编码为 UTF8STRING(类型=0x0c)。

这是有原因的,还是我的流程有问题,或者是openssl问题?

0 投票
4 回答
27430 浏览

ssl - SSL 错误:无法找到到所请求目标的有效证书路径

我正在尝试通过需要证书的服务器连接到 url。我已经将我的客户端身份验证证书导入到 {JAVA_HOME}/jre/bin/security/cacerts 并且我已经将它放在 Jboss/bin 和 jboss/server/conf/ 的密钥库中,然后我重新启动了我的服务器,它仍然给我以下错误。

我想问我能做些什么来解决它?我是否需要在 server.xml 中为该证书添加另一个:

还是我犯了其他错误?