我有一个类将从https服务器下载文件。 当我运行它时,它会返回很多错误。 我的证书似乎有问题。 是否可以忽略客户端服务器身份validation? 如果是这样,怎么样? package com.da; import java.io.FileOutputStream; import java.io.IOException; import java.nio.CharBuffer; import java.util.concurrent.Future; import org.apache.http.HttpResponse; import org.apache.http.client.utils.URIUtils; import org.apache.http.impl.nio.client.DefaultHttpAsyncClient; import org.apache.http.nio.IOControl; import org.apache.http.nio.client.HttpAsyncClient; import org.apache.http.nio.client.methods.AsyncCharConsumer; import org.apache.http.nio.client.methods.HttpAsyncGet; import org.apache.http.nio.client.methods.HttpAsyncPost; public class RSDDownloadFile { static FileOutputStream fos; public void DownloadFile(String URI, String Request) throws Exception { java.net.URI uri = URIUtils.createURI("https", "176.66.3.69:6443", -1, "download.aspx", "Lang=EN&AuthToken=package", […]
我对HTTPS / SSL / TLS相当陌生,而且我对使用证书进行身份validation时客户端的performance有些困惑。 我正在写一个Java客户端,需要做一个简单的POST数据到一个特定的URL。 这部分工作正常,唯一的问题是它应该通过HTTPS完成。 HTTPS部分相当容易处理(使用HTTPclient或使用Java的内置HTTPS支持),但我坚持使用客户端证书进行身份validation。 我注意到在这里已经有一个非常类似的问题,我还没有用我的代码尝试过(将尽快这样做)。 我目前的问题是 – 无论我做什么 – Java客户端永远不会发送证书(我可以检查这与PCAP转储)。 我想知道当用证书进行身份validation时,客户端应该向服务器提供什么(专门用于Java–如果这很重要的话)? 这是一个JKS文件,或PKCS#12? 他们应该是什么 只是客户端证书,或一个关键? 如果是这样,哪个键? 关于所有不同types的文件,证书types等都有相当多的混淆。 正如我之前所说,我是HTTPS / SSL / TLS的新手,所以我也希望能够获得一些背景信息(不一定是散文,我会解决链接到好文章)。
我试图连接到一个安全的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只是“靠本书”而失败。 我确实设法为此做了一个肮脏的解决方法,但我不是很高兴,所以如果有人能为我澄清这个问题,我会很高兴。
我正在创build一个使用HTTPS的安全的基于Web的API; 然而,如果我允许用户configuration它(包括发送密码)使用查询string将这也是安全的,或者我应该强制它通过POST完成?
我正在使用下面的代码基于loadspeed.js示例来打开https://网站,该网站也需要http服务器身份validation。 var page = require('webpage').create(), system = require('system'), t, address; page.settings.userName = 'myusername'; page.settings.password = 'mypassword'; if (system.args.length === 1) { console.log('Usage: scrape.js <some URL>'); phantom.exit(); } else { t = Date.now(); address = system.args[1]; page.open(address, function (status) { if (status !== 'success') { console.log('FAIL to load the address'); } else { t = Date.now() […]
我们有要求提交表单并保存一些数据,然后将用户redirect到非现场页面,但在redirect时,我们需要用POST提交表单,而不是GET。 我希望有一个简单的方法来完成这一点,但我开始认为没有。 我想我现在必须创build一个简单的其他页面,只是我想要的forms,redirect到它,填充表单variables,然后做一个body.onload调用脚本,只是调用document.forms [0] .submit( ); 任何人都可以告诉我,如果有替代scheme? 我们可能需要稍后在项目中调整它,这可能会有点复杂,所以如果有一个简单的方法,我们可以做到这一切非所有的其他页面依赖,这将是太棒了。 无论如何,感谢所有的答复。
我正在尝试使用HttpClient在Android手机上build立Https连接。 麻烦的是,因为证书没有签名,我不断收到“javax.net.ssl.SSLException:不受信任的服务器证书”。 现在我已经看到了一系列解决scheme,您只需接受所有证书,但如果我想问用户呢? 我想得到一个类似于浏览器的对话框,让用户决定是否继续。 最好我想使用浏览器相同的certificatestore。 有任何想法吗?
我试图将我网站上的所有不安全的HTTP请求(例如http://www.example.com )redirect到HTTPS( https://www.example.com )。 我使用PHP btw。 我可以在.htaccess中做到这一点吗?
我有以下的htaccess代码: <IfModule mod_rewrite.c> RewriteEngine On RewriteCond !{HTTPS} off RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] </IfModule> 我希望我的网站被redirect到https://www. 与HTTPS,并执行www. 子域,但是当我访问http://www. (没有HTTPS),它不会将我redirect到使用HTTPS的https://www 。
这看起来像一个标准的问题,但我无法在任何地方find明确的方向。 我有Java代码尝试连接到可能自签名(或过期)证书的服务器。 该代码报告以下错误: [HttpMethodDirector] I/O exception (javax.net.ssl.SSLHandshakeException) caught when processing request: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 据我了解,我必须使用keytool,并告诉java,这是可以的,以允许此连接。 解决这个问题的所有指令都假设我完全熟悉keytool,比如 为服务器生成私钥并将其导入到密钥库中 有没有人可以发布详细的说明? 我正在运行Unix,所以bash脚本将是最好的。 不知道是否重要,但代码在jboss中执行。