Tag: 自签名

Java SSL握手exception – “无法找到有效的证书路径”

我尝试使用安全SSL(TLS)连接和双向SSL身份validation在Java上创建服务器和客户端应用程序。 单向SSL(无客户端身份validation)运行良好。 启用客户端身份validation客户端无法与exception进行握手: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 服务器没有任何例外。 我在服务器和客户端使用Netty。 我为服务器和客户端使用自签名证书。 服务器和客户端 – 它现在是一个物理主机。 我已经使用此工具在truststore中添加了服务器证书: https://java-use-examples.googlecode.com/svn/trunk/src/com/aw/ad/util/InstallCert.java 客户代码。 主要。 public class SClientApp { public static final String HOST = “127.0.0.1”; public static final int PORT = 8888; public static void main(String[] args) throws Exception { System.setProperty(“javax.net.ssl.trustStore”, […]

如何使用NetBeans自行签名applet?

在过去的几个月里,我为一个学术项目开发了一个沙箱小程序。 由于Java 1.7.51对applet的安全限制,我一直试图自我签署我的applet,希望它能够遵守或克服JRE对applet的必要条件。 我正在使用NetBeans,我将一些显示如何自我签名jar文件的链接作为出发点。 不幸的是,我无法让它发挥作用。 我试图在build.xml文件中添加以下指令: 我收到以下错误消息: Execute failed: java.io.IOException: Cannot run program “jarsigner.exe”: error=2, The specified file is not found 我非常感谢你的帮助,以及更多关于NetBeans的帮助!

将JavaMail与自签名证书一起使用

我有一个包含以下代码的servlet: System.setProperty(“javax.net.ssl.keyStore”, getServletContext().getRealPath(“keystore.jks”)); System.setProperty(“javax.net.ssl.keyStorePassword”, “123456”); System.setProperty(“javax.net.ssl.trustStore”,getServletContext().getRealPath(“keystore.jks”)); System.setProperty(“javax.net.ssl.trustStorePassword”,”123456″); SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault(); SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket(“127.0.0.1”, 606); 使用此代码,我可以使用SSL(我的情况是强制性的)。 稍后在同一个servlet中我需要使用JavaMail发送电子邮件。 当我尝试在不使用其他代码中的证书的情况下发送此电子邮件时,它工作正常,但当我尝试使用它时,返回以下消息:使用端口465 – > DEBUG: setDebug: JavaMail version 1.4.7 DEBUG: setDebug: JavaMail version 1.4.7 DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle] DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: trying to connect to […]

从Netbeans构建时自动签名JAR

我想知道Netbeans是否有一些选项或设置允许我自动签署jar作为构建的一部分。

javax.net.ssl.SSLHandshakeException:收到致命警报:unknown_ca

我必须通过SSL双重身份validation连接到服务器。 我已将自己的私钥加证书添加到keystore.jks ,将服务器的自签名证书添加到truststore.jks ,这两个文件都复制到/ usr / share / tomcat7。 我的代码使用的套接字工厂由以下提供者提供: @Singleton public static class SecureSSLSocketFactoryProvider implements Provider { private SSLSocketFactory sslSocketFactory; public SecureSSLSocketFactoryProvider() throws RuntimeException { try { final KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); final InputStream trustStoreFile = new FileInputStream(“/usr/share/tomcat7/truststore.jks”); trustStore.load(trustStoreFile, “changeit”.toCharArray()); final TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); trustManagerFactory.init(trustStore); final KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); final InputStream keyStoreFile […]

自签名证书:DNSName组件必须以字母开头

有没有办法让java的keytool在SAN中使用通配符生成自签名证书(主题备用名称)? 我正在使用此命令生成密钥库: keytool -genkey -alias tomcat -storetype JKS -keyalg RSA -keysize 2048 -ext san=dns:*.example.com -keystore “path/to/my/keystore.jks” -validity 3650 但我得到IOException: DNSName components must begin with a letter 显然,问题是SAN中的*.example.com ,但我没有看到为example.com子域生成自签名证书的其他方法。 据此,它应该是可能的。 这是我的语法错误,keytool中的错误,还是我误解了什么? 顺便说一句,我正在使用JDK 1.8 update 60中的keytool 编辑我设法通过指定CN=*.example.com ,并将SAN留空,通过keytool为所有example.com子域生成自签名证书。 尽管如此,我会将Omikron的答案视为已被接受(因为它是一个真正的答案,而不是绕过限制)。

排球SSL – 主机名未经validation

我正在开发Android应用程序,我需要访问HTTPS地址。 我正在使用Volley来请求我的数据,但现在我收到此错误com.android.volley.NoConnectionError: java.io.IOException: Hostname ‘ ‘ was not verified 为了获得SSL工厂,我做了这个: private static SSLSocketFactory getSocketFactory() { SSLSocketFactory socketFactory = null; try { final CertificateFactory certificateFactory = CertificateFactory.getInstance(“X.509”); final BufferedInputStream bis = new BufferedInputStream(sContext.getResources().openRawResource(R.raw.cert)) ; Certificate certificate; try { certificate = certificateFactory.generateCertificate(bis); } finally { bis.close(); } final String keyStoreType = KeyStore.getDefaultType(); final KeyStore keyStore = KeyStore.getInstance(keyStoreType); […]

如何从Java生成,签名和导入SSL证书

可能重复: 使用Java生成证书,公钥和私钥 我需要在运行时生成自签名证书,签名并导入Java密钥库。 我可以通过命令行中的“keytool”和“openssl”以下列方式执行此操作: keytool -import -alias root -keystore keystore.txt -file cacert.pem keytool -genkey -keyalg RSA -keysize 1024 -alias www.cia.gov -keystore keystore.txt keytool -keystore keystore.txt -certreq -alias www.cia.gov -file req.pem openssl x509 -req -days 3650 -in req.pem -CA cacert.pem -CAkey cakey.pem -CAcreateserial -out reqsigned.pem keytool -import -alias www.cia.gov -keystore keystore.txt -trustcacerts -file reqsigned.pem 当然,我可以使用keytool和openssl二进制文件发送我的应用程序并从Java执行上述命令,但我正在寻找一种更清晰的方法,这将允许我使用纯Java完成上述所有操作。 我可以使用的任何库?

Java:具有自签名证书的SSL客户端身份validation

我正在尝试从通过Internet通信的Java客户端/服务器应用程序保护连接。 我的想法是使用带有自签名证书和客户端身份validation的SSL套接字。 我做了以下事情: 服务器:包含新自签名证书的密钥库。 keytool -genkey -kelalg RSA … 客户端:包含新自签名证书的密钥库。 keytool -genkey -kelalg RSA … 服务器:包含导出的客户端证书的Truststore(来自上面的项目符号)。 keytool -export导出客户端证书和keytool -import -v -trustcacerts将其导入服务器的信任库 客户端:包含导出的服务器证书的Truststore(来自第一个项目符号点)。 keytool -export导出服务器证书和keytool -import -v -trustcacerts将其导入客户端的信任库 信任和密钥库正确连接到服务器/客户端。 我可以看到正在加载的证书(SSL调试信息)。 但整件事情都行不通。 在SSL握手期间,我收到以下错误(SSL调试信息): main, WRITE: TLSv1 Handshake, length = 897 main, READ: TLSv1 Handshake, length = 141 *** Certificate chain *** main, SEND TLSv1 ALERT: fatal, description […]

Java:覆盖禁用SSL证书检查的function

Web服务通过SSL保留,它具有自签名证书,托管在远程系统中。我已经创建了一个访问该Web服务的客户端。 这是通过以编程方式将证书添加到密钥库来完成的。 现在我听说,没有必要将证书添加到密钥库以访问自签名Web服务。 相反,我们可以通过覆盖某些方法来禁用证书检查。 这是真的? 那些方法是哪些? 请帮忙。