问题标签 [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.
openssl - 使用 OpenSSL 以编程方式创建 X509 证书
我有一个 C/C++ 应用程序,我需要创建一个包含公钥和私钥的 X509 pem 证书。证书可以是自签名的,也可以是未签名的,没关系。
我想在应用程序中执行此操作,而不是从命令行。
哪些 OpenSSL 功能将为我做这件事?任何示例代码都是奖励!
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
我错过了什么?
java - 在 java 中验证证书会引发异常 - 无法找到请求目标的有效证书路径
我有一个 Web 应用程序,需要客户端发送它的证书,并且服务器必须验证证书(即查看颁发者是否是有效的颁发者并存在于服务器的信任库中)。这是代码:
但我得到一个例外:
注意:
这里客户端发送的证书是 client.crt,用于签署 client.crt 证书的证书是密钥库“trustedca”中存在的 ca.crt。那为什么会给出这个例外呢?
java - 尽管我明确设置了一个不验证任何证书的信任管理器,但为什么 Java 会尝试验证证书路径?
我有一个关于使用套接字和 Java 7 通过 SSL 进行简单通信的问题。
到目前为止,我已经创建了两个Runnable——一个用于服务器,一个用于客户端。最后,我想创建一个简单的测试,其中我的应用程序使用 SSL 将数据发送到模型服务器。服务器要做的就是接收客户端发送的字符串,将其与文件的内容进行比较,然后根据比较是否成功返回响应字符串。
但是,我被困在javax.net.ssl.SSLHandshakeException上,尽管我明确不希望客户端通过身份验证!在客户端,我创建了一个不验证任何证书的信任管理器。在服务器端,设置this.sslServerSocket.setWantClientAuth(false)和/或this.sslServerSocket.setNeedClientAuth(false)也无济于事。出于测试目的,客户端和服务器都使用名为“keystore.ks”的相同密钥文件。
我用下面的箭头 (----->) 标记了异常发生的点。也许有人可以给我一个提示那里有什么问题!
这是我的 SSLServer 类:
这是我的客户类:
最后,输出:
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
?
java - 当 TrustManagerFactory 不是 TrustManagerFactory (Java)
我正在尝试向现有的 App-Server (TomCat) 产品添加一些额外的 JUnit 测试。我遇到了(现有和已部署的)自定义 TrustManager 的问题。这件事在生产中运行良好,但在 JUnit 期间,出现异常。
定制的 TrustManager 仅从路径加载密钥库,并隐式信任我们自己的公共证书。出于某种原因,在 JUnits 中使用 this 会导致以下行出现异常:
例外:
无论使用何种 Provider/Algorithm 组合(“SunX509”、.getDefaultAlgorithm() 等),都会发生此异常。
任何见解将不胜感激。
c - 如何以编程方式从证书中提取信息?
我有一个生成的证书,但我希望能够从证书中提取信息,例如国家、有效性、公钥等。我必须将从证书中检索到的信息与我存储在 C 程序中的其他信息进行比较。
我知道如果我使用这样的功能,它会打印我的证书信息:
但我想要的只是这些信息的一部分。怎么做到呢?
谢谢
c - 使用 OpenSSL API 以编程方式验证证书链
这与其他问题非常相似,但我看过的问题要么没有答案,要么没有完全问同样的问题。我有一个自签名 CA 证书,以及使用该 CA 证书签名的另外两个证书。我很确定证书是正确的,因为“openssl verify”有效:
(以上是凭记忆,我面前没有,所以可能有点偏)。
现在我想以编程方式验证证书。我有一个带有以下伪代码的实用程序函数:
我的问题是上面的代码总是返回“找不到颁发者证书”。我做错了什么?我相信我正在创建一个新存储,添加 cacert,创建一个新上下文,并将要验证的子证书添加到上下文中,并带有指向包含 CA 的存储的指针。我很明显做错了什么,但我不确定是什么。
有任何想法吗?
更新:我知道我可以将这些证书保存到磁盘并使用 X509_LOOKUP_file 或类似的东西。我正在寻找一种不会不必要地接触磁盘的解决方案。
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问题?
ssl - SSL 错误:无法找到到所请求目标的有效证书路径
我正在尝试通过需要证书的服务器连接到 url。我已经将我的客户端身份验证证书导入到 {JAVA_HOME}/jre/bin/security/cacerts 并且我已经将它放在 Jboss/bin 和 jboss/server/conf/ 的密钥库中,然后我重新启动了我的服务器,它仍然给我以下错误。
我想问我能做些什么来解决它?我是否需要在 server.xml 中为该证书添加另一个:
还是我犯了其他错误?