Tag: ssl

keytool错误bash:keytool:找不到命令

我试图从Java bin目录执行keytool但是我收到一个错误警告bash:keytool:command not found。 root@xxxxxx]# keytool -genkey -alias mypassword -keyalg RSA bash: keytools: command not found

TLS上的Java Mail

我试图通过TLS连接从我的程序发送电子邮件。 这是我的代码 final String username = “XXXXXX”; final String password = “XXXXX”; Properties props = new Properties(); props.put(“mail.transport.protocol”, “smtp”); props.put(“mail.smtp.starttls.enable”,”true”); props.put(“mail.smtp.auth”, “true”); props.put(“mail.smtp.host”, “mail.xxxx.com”); props.put(“mail.smtp.port”, “587”); Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); Message message = new MimeMessage(session); message.setFrom(new InternetAddress(“from@xxxx.com”)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to_address)); message.setSubject(“Test Mail”); message.setText(“TestMail […]

Java SSL客户端未选择智能卡密钥

我正在尝试使用爱沙尼亚身份证在java程序中进行SSL客户端身份validation。 这适用于针对银行网站和测试服务器(nginx或openssl s_server)的Chrome / Firefox。 但是,我的Java客户端(okhttp)适用于本地密钥库,并在尝试使用ID卡时失败。 我把它归结为这个测试用例,它重现了我在调试器和日志记录中看到的问题(-Djavax.net.debug = ssl:handshake)。 我可以与卡通信,例如我可以打印出相同密钥的证书。 我正在Mac OSX上搭载DigiDoc3客户端 。 我可以看到似乎导致密钥被忽略的exception sun.security.pkcs11.wrapper.PKCS11Exception: CKR_ATTRIBUTE_TYPE_INVALID at sun.security.pkcs11.wrapper.PKCS11.C_GetAttributeValue(Native Method) at sun.security.pkcs11.P11Key.getAttributes(P11Key.java:275) at sun.security.pkcs11.P11Key.privateKey(P11Key.java:330) at sun.security.pkcs11.P11KeyStore.loadPkey(P11KeyStore.java:1311) at sun.security.pkcs11.P11KeyStore.engineGetEntry(P11KeyStore.java:943) at java.security.KeyStore.getEntry(KeyStore.java:1521) at sun.security.ssl.X509KeyManagerImpl.getEntry(X509KeyManagerImpl.java:276) at sun.security.ssl.X509KeyManagerImpl.getCertificateChain(X509KeyManagerImpl.java:107) at com.baulsupp.oksocial.TestMain.main(TestMain.java:37) 测试程序输出 1.0.Authentication ssl: KeyMgr: choosing key: Authentication (verified: OK) null null 测试代码 package com.baulsupp.oksocial; import java.io.ByteArrayInputStream; import java.io.IOException; import java.security.KeyStore; […]

apache commons net ssl握手错误与android

我搜索了一个答案,但我没有找到任何答案。 我正在为Android编写FTP同步工具,我想提供以下服务器类型: – FTP – > Works – SFTP – > Works – FTPS – >不再工作了 我使用apache commons网络库,在2.2版本的开头现在我检查3.0.1和3.1 snapshopt但问题并没有消失。 错误消息: W/System.err( 433): javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x2672b0: Failure in SSL library, usually a protocol error W/System.err( 433): error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol (external/openssl/ssl/s23_srvr.c:589 0xad12959f:0x00000000) W/System.err( 433): at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method) W/System.err( 433): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:474) W/System.err( 433): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:328) […]

从/ assets / filename公钥加载X509Certificate不正确

我在Windows上的java中运行以下代码,它就像一个魅力。 我使用的是带有OpenSSL生成的2048 RSA密钥的证书。 要看的重要部分是mServerPublicKey = cert.getPublicKey(); 我的用例需要公钥。 String serverCertFile = “C:\\Users\\Me\\Documents\\cert.pem”; CertificateFactory certFactory; FileInputStream inStream; try { certFactory = CertificateFactory .getInstance(“X.509”); inStream = new FileInputStream (serverCertFile); X509Certificate cer = (X509Certificate) certFactory.generateCertificate(inStream); mServerPublicKey = cer.getPublicKey(); inStream.close(); } catch (CertificateException e) { // TODO Auto-generated catch block e.printStackTrace(); Log.d(“SERVER CERTIFICATE”,”Unable to load certificate ” + e.getMessage()); } […]

为什么我会出现握手失败(Java SSL)

我正在通过HTTPS连接到Web服务。 我已经完成了我认为使其工作所需的所有内容,但最终我得到了握手失败。 我发现作为一个新用户,我不能发布超过2个链接,因为“垃圾邮件保护” – 比很多堆栈溢出…无论如何这里是一个链接到一个所有链接拼写的pastebinpost…所以当我在这里写了“链接#1”,它是对这些链接的引用: http : //pastebin.com/y4zGNRC7 我使用HttpClient(服务URL上的GET)validation了相同的行为,并实际通过CXF代理调用Web服务 我正在设置密钥库和信任库 – 我尝试了“in code”方式(链接#1)和设置系统属性 – 即System.setProperty(“javax.net.ssl.keyStore”,“mykeystore.jks” ); SSL调试已启用(javax.net.debug = all) SSL调试脱口而出密钥库和信任库的内容(即看起来像java“了解它们”) – 链接#2 似乎有一些客户端 – 服务器通信正在进行,但随后由于某种原因链接#3崩溃 我在浏览器(Chrome)中使用客户端和CA证书并使用openssl s_client成功连接到服务器 wireshark显示较少的客户端 – 服务器通话来自java(链接#4),然后例如来自Chrome(链接#5) 另一个奇怪的事情是,当我设置密钥库时我似乎得到了相同的行为,而当我没有设置密钥库时(唯一的区别是当我在控制台中打印密钥库内容时,但就是这样)。 我试过谷歌搜索问题,我在stackoverflow上看到了很多类似的post,但没有任何帮助。 我尝试更改协议版本(“TLSv1”,“SSLv3”,甚至是奇怪的v2 Hello)。 任何帮助将不胜感激 – 也许我可能忽略了一些基本的东西…我在这里绝望… Thanx PS我在Fedora Core 15(64位)上运行java 1.6 update 30

如何解决“证书无效且无法用于validation本网站的身份”错误?

问题是, 如何解决“证书无效且无法用于validation本网站的身份”错误? 。 以下是详细信息: 我有一个已经正常工作的签名小程序,直到我将Java更新为8u25(1.8.0_25-b18)。 现在,应用程序显示一条警告消息“您要继续吗?与此网站的连接不受信任”。 此消息中还有一条注释,“ The certificate is not valid and cannot be used to verify the identity of this website ”。 小程序加载没有问题。 但是,当用户尝试使用该应用程序的特定function时,将显示警告消息。 发生这种情况时我检查了java控制台,并在这些行后面显示此警告消息: security: Obtain certificate collection in SSL Root CA certificate store security: Invalid certificate from HTTPS server network: Cache entry not found [url: https://sub.domain.net:9876, version: null] 该应用程序从另一个域下载,例如“ https://app.domain.net/ …..”,因此不会从“ […]

Java 7(充当客户端)使用在Java 6中工作的密钥库和信任库的SSL握手失败

我正在进行JBoss AS 5.1到7.4以及Java 6到7的迁移,并且获得握手失败。 密钥库和信任库是我们在Java 6中成功使用的密钥库和信任库。 我已经写了一些测试来缩小问题范围,它绝对不是JBoss,而是Java 7。 启用S​​SL日志记录后,我明白了: 17:44:30,041 INFO [stdout] (http-/192.168.147.20:8080-120) %% Invalidated: [Session-2, SSL_RSA_WITH_RC4_128_SHA] 17:44:30,041 INFO [stdout] (http-/192.168.147.20:8080-120) http-/192.168.147.20:8080-120, SEND TLSv1 ALERT: fatal, description = certificate_unknown 17:44:30,041 INFO [stdout] (http-/192.168.147.20:8080-120) http-/192.168.147.20:8080-120, WRITE: TLSv1 Alert, length = 2 17:44:30,041 INFO [stdout] (http-/192.168.147.20:8080-120) http-/192.168.147.20:8080-120, called closeSocket() 17:44:30,041 INFO [stdout] (http-/192.168.147.20:8080-120) http-/192.168.147.20:8080-120, handling exception: javax.net.ssl.SSLHandshakeException: […]

SSL / TLS中的AES-GCM支持Java 7?

根据Java 7文档以及第三方供应商,Java 7应该支持AES-GCM套件: ibm java 7 java 7 ssl doc 由于将其限制为仅仅AES-GCM密码,我在客户端和服务器之间的协商中遇到了一些无法协商密码的错误。 经过调查,我发现似乎客户端和服务器(tomcat实例)都不支持密码套件。 在客户端上运行一些示例代码以获取输出: // Create an SSLContext that uses our TrustManager SSLContext context = SSLContext.getInstance(“TLS”); context.init(null, trustAllCerts, new SecureRandom()); SSLParameters params = context.getSupportedSSLParameters(); String[] suites = params.getCipherSuites(); System.out.println(“Java version : ” + System.getProperty(“java.runtime.version”)); System.out.println(“Connecting with ” + suites.length + ” cipher suites supported:”); for (int […]

如何以编程方式设置JAX-WS客户端的SSLContext?

我正在使用具有浏览器客户端的分布式应用程序中的服务器,并且还参与与第三方的服务器到服务器通信。 我的服务器有一个CA签名证书,让我的客户端使用HTTP / S和XMPP(安全)使用TLS(SSL)通信进行连接。 这一切都很好。 现在,我需要通过HTTPS / SSL使用JAX-WS安全地连接到第三方服务器。 在此通信中,我的服务器在JAX-WS交互中充当客户端,并且我已经由第三方签署了客户端证书。 我尝试通过标准系统配置( -Djavax.net.ssl.keyStore=xyz )添加新的密钥库,但我的其他组件明显受此影响。 虽然我的其他组件使用专用参数进行SSL配置( my.xmpp.keystore=xxx, my.xmpp.truststore=xxy, … ),但似乎他们最终使用全局SSLContext 。 (配置命名空间my.xmpp.似乎表示分离,但事实并非如此) 我也尝试将我的客户端证书添加到我的原始密钥库中,但是 – 我的其他组件似乎也不喜欢它。 我认为我唯一的选择是以编程方式挂钩到JAX-WS HTTPS配置,以便为客户端JAX-WS交互设置密钥库和信任库。 有关如何做到这一点的任何想法/指示? 我找到的所有信息都使用了javax.net.ssl.keyStore方法,或者设置了全局SSLContext ,我想这将最终出现在同一个confilc中。 我得到的最接近的东西是这个旧的错误报告请求我需要的function: 添加支持将SSLContext传递给JAX-WS客户端运行时 任何需要?