我试图连接到一个安全的web服务。 即使我的密钥库和信任库已经正确设置,我仍然握手失败。 经过几天的沮丧,不停地search,并询问周围的人,我发现唯一的问题是,javaselect不握手握手期间发送客户端证书到服务器。 特别: 服务器请求客户端证书(CN = RootCA) – 即“给我一个由根CA签名的证书” Java查看密钥库,只发现我的客户端证书由“SubCA”签名,而“SubCA”则由“RootCA”发布。 它没有费心去查看信任库…呃好吧,我猜 可悲的是,当我试图将“SubCA”证书添加到密钥库时,根本没有任何帮助。 我没有检查证书是否加载到密钥库中。 他们这样做,但KeyManager忽略除客户端之外的所有证书。 所有上述导致的事实,即java决定它没有任何证书满足服务器的请求,并发送什么都没有… tadaaa握手失败:-( 我的问题: 是否有可能以“破坏证书链”的方式将密钥库中的“SubCA”证书添加到密钥库中,以便KeyManager只加载客户端证书而忽略其他证书? (Chrome和opensslpipe理弄清楚,为什么不能java? – 请注意,“SubCA”证书总是作为受信任的权威机构单独提出,所以Chrome在握手期间显然正确地将其与客户端证书一起打包) 这是服务器端的一个正式的“configuration问题”吗? 服务器是第三方。 我希望服务器能够申请由“SubCA”机构签署的证书,因为这是他们提供给我们的。 我怀疑,这在Chrome和openssl中起作用的事实是因为它们“较less限制”,而java只是“靠本书”而失败。 我确实设法为此做了一个肮脏的解决方法,但我不是很高兴,所以如果有人能为我澄清这个问题,我会很高兴。
root@sclrdev:/home/sclr/certs/FreshCerts# curl –ftp-ssl –verbose ftp://{abc}/ -u trup:trup –cacert /etc/ssl/certs/ca-certificates.crt * About to connect() to {abc} port 21 (#0) * Trying {abc}… * Connected to {abc} ({abc}) port 21 (#0) < 220-Cerberus FTP Server – Home Edition < 220-This is the UNLICENSED Home Edition and may be used for home, personal use only < 220-Welcome to […]
有几种方法可以包括jQuery和jQuery UI,我想知道人们在使用什么? Google JSAPI jQuery的网站 你自己的网站/服务器 另一个CDN 我最近一直在使用Google JSAPI,但发现设置SSL连接需要很长时间,甚至只能解决google.com。 我一直在使用Google的以下内容: <script src="https://www.google.com/jsapi"></script> <script> google.load('jquery', '1.3.1'); </script> 我喜欢使用Google的想法,以便在访问其他网站时caching,并节省我们服务器的带宽,但是如果它一直是网站的缓慢部分,我可能会更改包含。 你用什么? 你有什么问题吗? 编辑:刚刚访问jQuery的网站,他们使用以下方法: <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> Edit2:以下是我在去年包括jQuery没有任何问题: <script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script> 不同的是删除http: 通过删除这个,你不需要担心在http和https之间切换。
我正在尝试Michael Hartl教程。 当我尝试在我的gemset中安装rails 3.2.14时,出现以下问题: $ gem install rails -v 3.2.14 错误:找不到有效的gem'rails'(= 3.2.14),这是为什么: 无法从https://rubygems.org/下载数据 – SSL_connect返回= 1 errno = 0状态= SSLv3读取服务器证书B:证书validation失败( https://s3.amazonaws.com/production.s3.rubygems.org /specs.4.8.gz ) search后,我发现我可以使用非SSL来源的rubygems,所以我跑: sudo gem sources -a http://rubygems.org 然后,当我试图再次安装轨道,它是成功的。 不过,我仍然有这个问题,但作为一个警告: 警告:无法从“ https://rubygems.org/ ”获取数据:SSL_connect返回= 1 errno = 0状态= SSLv3读取服务器证书B:证书validation失败( https://s3.amazonaws.com/production.s3 .rubygems.org / specs.4.8.gz ) 我怎样才能完全删除这个警告/错误? 我正在使用以下内容: rvm 1.22.15 ruby2.0.0p247(2013-06-27修订号41674)[x86_64-darwin12.3.0] OSX 10.8.5
我得到这个错误 Exception in thread Thread-3: Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 810, in __bootstrap_inner self.run() File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 763, in run self.__target(*self.__args, **self.__kwargs) File "/Users/Matthew/Desktop/Skypebot 2.0/bot.py", line 271, in process info = urllib2.urlopen(req).read() File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 154, in urlopen return opener.open(url, data, timeout) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 431, in open response = self._open(req, data) […]
我正在创build一个使用HTTPS的安全的基于Web的API; 然而,如果我允许用户configuration它(包括发送密码)使用查询string将这也是安全的,或者我应该强制它通过POST完成?
我今天从Java 1.6升级到Java 1.7。 从那时起,当我尝试通过SSLbuild立到我的web服务器的连接时发生错误: javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name at sun.security.ssl.ClientHandshaker.handshakeAlert(ClientHandshaker.java:1288) at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1904) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1027) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1262) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1289) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1273) at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:523) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1296) at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254) at java.net.URL.openStream(URL.java:1035) 这里是代码: SAXBuilder builder = new SAXBuilder(); Document document = null; try { url = new URL(https://some url); document = (Document) builder.build(url.openStream()); } catch (NoSuchAlgorithmException ex) […]
我知道密钥库通常会保存私钥/公钥和信任存储公钥(并且代表您要与之通信的可信方的列表)。 那么,这是我的第一个假设,所以如果这是不正确的,我可能还没有开始好… 我对使用keytool时如何区分商店感兴趣。 所以,我已经创build了一个密钥库使用 keytool -import -alias bob -file bob.crt -keystore keystore.ks 它创build我的keystore.ks文件。 我回答yes的问题,我相信鲍勃,但它不知道这是否已经创build了一个密钥库文件或信任库文件? 我可以设置我的应用程序使用该文件。 -Djavax.net.ssl.keyStore=keystore.ks -Djavax.net.ssl.keyStorePassword=x -Djavax.net.ssl.trustStore=keystore.ks -Djavax.net.ssl.trustStorePassword=x 和System.setProperty( "javax.net.debug", "ssl")设置,我可以看到在可信任证书(但不在密钥库部分下)的证书。 我正在导入的特定证书只有一个公钥,我打算使用它通过SSL连接向Bob发送东西(但也许这是最好的另一个问题!)。 任何指针或澄清将不胜感激。 keytool的输出与导入的输出是否相同,以及它只是一个密钥库而另一个是信任存储的惯例? 使用SSL等有什么关系?
我正在使用XAMPP进行开发。 最近,我将xampp的安装从旧版本升级到1.7.3。 现在,当我curl启用HTTPS的网站,我得到以下exception 致命错误:带有消息“cURL resource:Resource id#55”的未捕获exception“RequestCore_Exception” cURL错误:SSL证书问题,请validationCA证书是否正确。 详细信息:错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书validation失败(60)' 大家都build议使用PHP代码中的一些特定的curl选项来解决这个问题。 我认为这不应该是这样的。 因为我对旧版本的XAMPP没有任何问题,只是在安装新版本后才发生。 我需要帮助来弄清楚PHP安装中的设置有什么变化,Apache等可以解决这个问题。
为了清楚起见,这些表述可能是单独的问题,但它们都涉及同一个问题。 如何解决SSL证书服务器名称? 为什么浏览器似乎使用证书的CN域,但是Java的机制似乎只能看“主体替代名”? 是否有可能使用keytool向SSL证书添加替代名称? 如果没有,是使用openSSL而不是一个好的select? 只是一点点的背景:我需要一个主服务器使用HTTPS与几台服务器进行通信。 显然,我们不想为每个服务器购买SSL证书(可能有很多),所以我想使用自签名证书(我一直在使用keytool来生成它们)。 在操作系统中添加可信的证书之后,浏览器(IE和Chrome)高兴地将连接接受为可信。 但是,即使在将证书添加到Java的cacerts之后,Java仍然不会将该连接接受为可信,并引发以下exception: 导致:java.security.cert.CertificateException:在sun.security.util.HostnameChecker.match(HostnameChecker.java:75)处的sun.security.util.HostnameChecker.matchIP(HostnameChecker.java:142)在com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:250)com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkIdentity(X509T rustManagerImpl.java:264)。 sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Clien tHandshaker.java:1185)… 14更多 我发现我可以让Java信任实施我自己的HostNameVerifier的证书,我从这里复制了这个证书: com.sun.jbi.internal.security.https.DefaultHostnameVerifier只是为了testing(顺便说一句,作为parameter passing给主机名HostnameVerifier是正确的,所以我认为它应该被接受)。 我一直使用证书字段CN作为主机名(通常是IP地址)。 任何人都可以告诉我,如果我做错了什么,并指出我在正确的方向吗?