我正在开发一个需要客户端和服务器证书authentication的Android应用程序。 我有一个SSLClient类,我创build了在常规桌面Java SE 6上的漂亮的作品。我已经将它移到我的Android项目中,并且出现以下错误:“KeyStore JKS实现未find”。 我在网上看了一下,它看起来有可能Java密钥库不支持Android(真棒!),但我有一种感觉还有更多的比它,因为我没有发现样本代码类似于我一点都不想做。 我发现的一切都是关于使用http客户端而不是原始SSL套接字。 我需要这个应用程序的SSL套接字。 以下是我的SSLClient.java文件中的代码。 它读取密钥库和信任库,创build一个到服务器的SSL套接字连接,然后在等待来自服务器的input行时运行一个循环,然后通过调用另一个类中的方法来处理它们。 我非常有兴趣听到任何有经验的人在Android平台上做SSL套接字。 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.security.AccessControlException; import java.security.KeyManagementException; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.UnrecoverableKeyException; import java.security.cert.CertificateException; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocket; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManagerFactory; import otherpackege.OtherClass; import android.content.Context; import android.util.Log; public class […]
如何忽略Apache HttpClient 4.3的 SSL证书(全部信任)? 我在SO上发现的所有答案都对待以前的版本,并且API已经改变。 有关: 如何忽略Apache HttpClient 4.0中的SSL证书错误 如何使用Apache HttpClient处理无效的SSL证书? 在开发过程中需要使用Spring来信任所有的证书 使用Java忽略SSL证书错误 编辑: 这只是为了testing目的。 孩子们,不要在家里(或在生产)
有了以下两个类,我试着连接到一个MySQL数据库。 不过,我总是得到这个错误: Wed Dec 09 22:46:52 CET 2015 WARN:build议不build立服务器身份validation的SSL连接。 根据MySQL 5.5.45+,5.6.26+和5.7.6+的要求,如果没有设置显式选项,则必须默认build立SSL连接。 为了符合不使用SSL的现有应用程序,verifyServerCertificate属性设置为“false”。 您需要通过设置useSSL = false来显式禁用SSL,或者设置useSSL = true并为服务器证书validation提供信任库。 这是main方法的testing类: public class TestDatabase { public static void main(String[] args) { Database db = new Database(); try { db.connect(); } catch (Exception e) { e.printStackTrace(); } db.close(); } } 这是Database类: import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class […]
我试图连接到一个SSL服务器,这需要我来validation自己。 为了在Apache MINA上使用SSL,我需要一个合适的JKS文件。 但是,我只给了一个.PEM文件。 我将如何去从PEM文件创build一个JKS文件?
我使用以下步骤创build了一个新的Java密钥库,其中包含一对由Java(内部)服务器和TLS使用的私钥/公钥。 请注意,证书是自签名的: 1)用AES256生成密钥 openssl genrsa -aes256 -out server.key 1024 2)为CA生成证书请求 openssl req -x509 -sha256 -new -key server.key -out server.csr 3)生成自签名到期时间10年 openssl x509 -sha256 -days 3652 -in server.csr -signkey server.key -out selfsigned.crt 4)使用像KeyStoreExplorer这样的程序将一对(私钥和自签名证书)导入到一个新的JKS 这工作,但我想实现最后一步,而不使用GUI。 我知道如何只导入自签名证书: // create the keystore and import the public key. THIS WILL NOT IMPORT THE PRIVATE KEY SO THE KEYSTORE CAN'T BE […]
我写了一个小函数来build立当前的网站url协议,但我没有SSL,不知道如何testing它是否在https下工作。 你能告诉我,如果这是正确的? function siteURL() { $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://"; $domainName = $_SERVER['HTTP_HOST'].'/'; return $protocol.$domainName; } define( 'SITE_URL', siteURL() ); 是否有必要像上面这样做,或者我可以这样做吗? function siteURL() { $protocol = 'http://'; $domainName = $_SERVER['HTTP_HOST'].'/' return $protocol.$domainName; } define( 'SITE_URL', siteURL() ); 在SSL下,即使定位标记url使用http,服务器是否也会自动将url转换为https? 是否有必要检查协议? 谢谢!
我被要求在本地主机上使用Apache上的自签名证书来设置HTTPS,但是我该怎么做呢? 我根本不知道。
安全validationssl证书所需的一系列步骤是什么? 我(非常有限)的理解是,当你访问https站点时,服务器向客户端(浏览器)发送一个证书,浏览器从该证书获取证书的颁发者信息,然后用它来联系发布者,证书的有效性。 这到底如何? 那么这个过程如何使它免于中间人攻击呢? 什么阻止了一些随机的人build立他们自己的validation服务来使用中间人攻击,所以一切看上去都是安全的?
试图解决我遇到的OpenSSL版本问题。 我的Mac似乎有三个不同版本的OpenSSL。 Python 2.7.11的版本为0.9.7m: python -c "import ssl; print ssl.OPENSSL_VERSION" OpenSSL 0.9.7m 23 Feb 2007 在docker: openssl version OpenSSL 1.0.1h 5 Jun 2014 最近编译/安装: /usr/local/ssl/bin/openssl OpenSSL> version OpenSSL 1.0.2h 3 May 2016 OpenSSL> 我最近升级了我的OS X 10.11.5。 在这个过程中,导致了以前工作的Python脚本的问题。 以下是错误消息片段: Python错误消息: You are linking against OpenSSL 0.9.8, which is no longer * RuntimeError: You are linking against […]
我在这里问了一个问题,回到如何隐藏我的http请求调用,并使其在我的应用程序中更安全。 我不希望人们使用小提琴手2看到电话,并build立一个自动回复。 每个人都告诉我去SSL,电话会隐藏起来,信息保持安全。 我购买并安装了一个SSL证书,并设置了一切。 我启动了fiddler 2并运行一个testing应用程序,连接到一个https web服务以及连接到一个https php脚本。 提琴手2不仅能够检测到这两个请求,但也解密它们! 我能够看到所有的信息,回到我的问题。 如果SSL与安全性没有什么区别,那么使用SSL有什么意义呢? 有或没有SSL我可以看到所有的信息回来和第四,仍然build立一个自动回复。 有没有.NET中的东西我想失去更好地隐藏我的电话通过SSL? 编辑 由于我收到了一些答复,我在这个问题上增加了一个新的部分。 如果一个应用程序连接到一个Web服务来login会怎么样? 该应用程序发送Web服务的用户名和密码。 然后,Web服务将数据发送回应用程序,说明login数据良好或不好。 即使通过SSL,使用小提琴手2的人也可以设置一个自动应答器,然后应用程序被“破解”。 我明白如何在debugging中看到数据是有用的,但是我的问题是确切地说应该确保SSL连接到正在请求的数据。 基本上说不能有一个中间人。