最近,Chrome已停止使用我自己签署的SSL证书,并认为它们不安全.当我查看DevTools | Security
选项卡中的证书时,我可以看到它说
主题备用名称缺失此站点的证书不包含包含域名或IP地址的主题备用名称扩展名.
证书错误站点的证书链存在问题(net :: ERR_CERT_COMMON_NAME_INVALID).
我怎样才能解决这个问题?
我有一个C/C++应用程序,我需要创建一个包含公钥和私钥的X509 pem证书.证书可以是自签名的,也可以是未签名的,无关紧要.
我想在应用程序中执行此操作,而不是从命令行执行此操作.
什么OpenSSL功能会为我做这个?任何示例代码都是奖金!
我正在尝试在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) 如何获取公共证书信息的哈希值,以便能够在我的应用程序中执行SSL固定?
我在我的iOS应用程序中使用TrustKit,它要求我设置我期望的哈希.我在哪里可以得到这个?
这与其他问题非常相似,但我看过的问题要么没有答案,要么也不会问同样的问题.我有一个自签名的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之类的东西.我正在寻找一种不会不必要地接触磁盘的解决方案.
我正在尝试向现有的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()等),都会发生此异常.
任何见解将不胜感激.
我在本地计算机上安装 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
我知道这个错误有详细记录。我遵循了许多指南并阅读了很多相关内容,但我发现的所有建议都没有解决我的问题。
我做了什么:
从网站下载随机 SSL 证书并将其添加到 Java 目录中的 cacert 文件中(在此处进行描述)。
为 SQL Server 配置 Spring Boot(此处描述)
为 SQL Server 配置 SSL 加密(此处描述)
这些建议都没有解决该错误。我唯一意识到的是,如果我设置spring.jpa.hibernate.ddl-auto
程序application.properties
会none
显示错误消息,但它不会中止运行。
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) 我收到了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) 谁能帮助我理解MarshalPKIXPublicKey()和MarshalPKCS1PublicKey()之间的区别?
根据评论:// MarshalPKIXPublicKey将公钥序列化为DER编码的PKIX格式.
// MarshalPKCS1PublicKey将RSA公钥转换为PKCS#1,ASN.1 DER表单.
什么是DER编码的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中手动安装.可能是什么问题?谢谢!