标签: pkix

无效的自签名SSL证书 - "主题备用名称丢失"

最近,Chrome已停止使用我自己签署的SSL证书,并认为它们不安全.当我查看DevTools | Security选项卡中的证书时,我可以看到它说

主题备用名称缺失此站点的证书不包含包含域名或IP地址的主题备用名称扩展名.

证书错误站点的证书链存在问题(net :: ERR_CERT_COMMON_NAME_INVALID).

我怎样才能解决这个问题?

ssl https google-chrome pkix

85
推荐指数
4
解决办法
11万
查看次数

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

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

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

什么OpenSSL功能会为我做这个?任何示例代码都是奖金!

openssl ssl-certificate x509 pkix

68
推荐指数
3
解决办法
5万
查看次数

JavaMail中的错误:PKIX路径构建失败,无法找到所请求目标的有效证书路径

我正在尝试在android中构建一个电子邮件客户端应用程序,现在我想配置javaMail部分.

我正在尝试与imap服务器建立连接,但我的代码有问题..这是我的代码:

package mailpackage;

import java.util.Properties;

import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Store;

public class Connection implements Runnable
{
    boolean done;

    public Connection()
    {
        this.done=false;
    }

    @Override
    public void run()
    {
        System.out.println("Hello from Connection Thread!");
        while(!done)
        {
            String host = "myhost";// change accordingly
            String mailStoreType = "imap";
            String username = "myusername";// change accordingly
            String password = "mypasswd";// change accordingly

            check(host, mailStoreType, username, password);

        }
    }

    public static void receiveEmail(String host, String storeType,  String …
Run Code Online (Sandbox Code Playgroud)

java email ssl jakarta-mail pkix

24
推荐指数
3
解决办法
6万
查看次数

如何获取SSL固定的公钥哈希?

如何获取公共证书信息的哈希值,以便能够在我的应用程序中执行SSL固定?

我在我的iOS应用程序中使用TrustKit,它要求我设置我期望的哈希.我在哪里可以得到这个?

ssl x509 pinning ios pkix

24
推荐指数
4
解决办法
2万
查看次数

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

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

$ openssl verify -CAfile ca.pem server.pem
server.pem: OK
Run Code Online (Sandbox Code Playgroud)

(以上是从记忆中,我没有在他面前,所以它可能会略微偏离).

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

int verify_cert(X509 *cert, X509 *cacert)
{
     int ret;
     X509_STORE *store;
     X509_STORE_CTX *ctx;

     store = X509_STORE_new();
     X590_STORE_add_cert(store, cacert);

     ctx = X509_STORE_CTX_new();
     X509_STORE_CTX_init(ctx, store, cert, NULL);

     ret = X590_verify_cert(ctx);

     /* check for errors and clean up */
}
Run Code Online (Sandbox Code Playgroud)

我的问题是上面的代码总是返回"找不到发行者证书".我做错了什么?我相信我正在创建一个新的商店,添加cacert,创建一个新的上下文,并使用指向包含CA的商店的指针将要验证的子证书添加到上下文中.我显然做错了什么,但我不确定是什么.

有任何想法吗?

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

c openssl certificate-store x509 pkix

22
推荐指数
3
解决办法
4万
查看次数

当TrustManagerFactory不是TrustManagerFactory(Java)时

我正在尝试向现有的App-Server(TomCat)产品添加一些额外的JUnit测试.我遇到了(现有的和已部署的)自定义TrustManager的问题.这个东西在生产中工作正常,但在JUnit期间,给出异常.

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

TrustManagerFactory tmFactory = TrustManagerFactory.getInstance("PKIX");    
Run Code Online (Sandbox Code Playgroud)

例外:

java.security.NoSuchAlgorithmException:  class configured for TrustManagerFactory: com.sun.net.ssl.internal.ssl.TrustManagerFactoryImpl$PKIXFactory not a TrustManagerFactory
Run Code Online (Sandbox Code Playgroud)

无论使用哪种提供者/算法组合("SunX509",.getDefaultAlgorithm()等),都会发生此异常.

任何见解将不胜感激.

java security ssl junit pkix

18
推荐指数
1
解决办法
5002
查看次数

SQL Server/Spring Boot:PKIX 路径构建失败:无法找到请求目标的有效证书路径

我在本地计算机上安装 SQL Server 并将其嵌入到我的 Spring Boot 应用程序中。启动Tomcat后出现以下错误:

'PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target'. ClientConnectionId:85411829-6853-4fdb-9373-b4c93e1d5e8f

我知道这个错误有详细记录。我遵循了许多指南并阅读了很多相关内容,但我发现的所有建议都没有解决我的问题。

我做了什么:

这些建议都没有解决该错误。我唯一意识到的是,如果我设置spring.jpa.hibernate.ddl-auto程序application.propertiesnone显示错误消息,但它不会中止运行。

application.properties 如下所示:

spring.datasource.url=jdbc:sqlserver://localhost;databaseName=Car
spring.datasource.username=admin
spring.datasource.password=password123
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.jpa.hibernate.ddl-auto=none
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect
server.port=8443
server.ssl.key-alias=selfsigned_localhost_sslserver
server.ssl.key-password=changeit
server.ssl.key-store=classpath:ssl-server.jks
server.ssl.key-store-provider=SUN
server.ssl.key-store-type=JKS
Run Code Online (Sandbox Code Playgroud)

我的依赖项:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId> …
Run Code Online (Sandbox Code Playgroud)

java sql-server ssl pkix spring-boot

16
推荐指数
2
解决办法
2万
查看次数

以编程方式将证书添加到Java KeyStore的选项

我收到了SSL握手异常错误:PKIX"路径不链"(此处描述).我通过使用openssl导入证书链来修复它:

openssl s_client -host www.envmgr.com -port 443 -showcerts > cert_chain.crt

并将其安装到我的JDK密钥库中:

keytool -import -alias envmgrchain -file cert_chain.crt -keystore cacerts -storepass changeit
Run Code Online (Sandbox Code Playgroud)

这很有效.万岁.问题是我们将把我们的应用程序放在像rackspace或AWS这样的云服务器上,我认为我们很有可能无法修改JVM的密钥库来添加这个链.

我想,"没问题,我只是以编程方式将此证书链添加到密钥库"所以我将其从JVM中删除:

keytool -delete -alias envmgrchain -keystore cacerts -storepass changeit
Run Code Online (Sandbox Code Playgroud)

并添加了此代码:

    KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
    //Create an empty keystore that we can load certificate into
    trustStore.load(null);
    InputStream fis = new FileInputStream("cert_chain.crt");
    BufferedInputStream bis = new BufferedInputStream(fis);

    CertificateFactory cf = CertificateFactory.getInstance("X.509");
    while(bis.available()>0) {
        Collection<? extends Certificate> certs = cf.generateCertificates(bis);
        Iterator<? extends Certificate> iter = certs.iterator();
        //Add each cert …
Run Code Online (Sandbox Code Playgroud)

java ssl keystore pkix programmatically-created

12
推荐指数
1
解决办法
1万
查看次数

golang x509.MarshalPKIXPublicKey vs x509.MarshalPKCS1PublicKey()

谁能帮助我理解MarshalPKIXPublicKey()和MarshalPKCS1PublicKey()之间的区别?

根据评论:// MarshalPKIXPublicKey将公钥序列化为DER编码的PKIX格式.

// MarshalPKCS1PublicKey将RSA公钥转换为PKCS#1,ASN.1 DER表单.

什么是DER编码的PKIX格式?

谢谢

rsa go pkix

7
推荐指数
1
解决办法
702
查看次数

Eclipse中的PKIX路径构建失败

我正在使用Liferay,我正在使用eclipse,并使用加密套接字(SSL)运行客户端/服务器模型.

目前,当我以批处理模式运行应用程序时,我的应用程序正在运行客户端/服务器连接,但是当我尝试在Eclipse中启动服务器时,应用程序正在给我错误

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
Run Code Online (Sandbox Code Playgroud)

我已经使用InstallCert.java并将jssecacerts复制到

%JAVA_HOME%/ jdk_version/JRE/lib/security中

但仍然给我错误.我还检查了证书(keytool -v -list)并在受信任的根CA中手动安装.可能是什么问题?谢谢!

java eclipse ssl liferay pkix

6
推荐指数
3
解决办法
3万
查看次数