最近发布了一个关于HttpClient过度Https 的问题(在这里找到).我已经取得了一些进展,但我遇到了新的问题.和我的上一个问题一样,我似乎无法找到适合我的任何地方的例子.基本上,我希望我的客户端接受任何证书(因为我只指向一个服务器),但我一直在接受javax.net.ssl.SSLException: Not trusted server certificate exception.
所以这就是我所拥有的:
public void connect() throws A_WHOLE_BUNCH_OF_EXCEPTIONS {
HttpPost post = new HttpPost(new URI(PROD_URL));
post.setEntity(new StringEntity(BODY));
KeyStore trusted = KeyStore.getInstance("BKS");
trusted.load(null, "".toCharArray());
SSLSocketFactory sslf = new SSLSocketFactory(trusted);
sslf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme ("https", sslf, 443));
SingleClientConnManager cm = new SingleClientConnManager(post.getParams(),
schemeRegistry);
HttpClient client = new DefaultHttpClient(cm, post.getParams());
HttpResponse result = client.execute(post);
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
W/System.err( 901): javax.net.ssl.SSLException: Not trusted server certificate
W/System.err( 901): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:360)
W/System.err( 901): …Run Code Online (Sandbox Code Playgroud) 从今天早上起,我的证书在Android上不再受信任,然后我的应用程序再也无法连接:
Catch exception while startHandshake: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
return an invalid session with invalid cipher suite of SSL_NULL_WITH_NULL_NULL
javax.net.ssl.SSLPeerUnverifiedException: No peer certificate
at org.apache.harmony.xnet.provider.jsse.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:137)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:93)
at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:381)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:165)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:591)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:807)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:781)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:770)
Run Code Online (Sandbox Code Playgroud)
如果我尝试在谷歌浏览器(在PC上)没有问题,证书是可信的,但如果我在Android上使用Chrome浏览器,它会告诉我证书不受信任.我能做什么?
我是移动开发新手,我正在尝试将我的 .NET Maui 应用程序连接到本地 ASP.NET Core 网站 (API)。
我目前被此异常阻止:
System.Net.WebException: 'java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.'
运行dotnet dev-certs https --trust回报A valid HTTPS certificate is already present.
我当前的代码是:
HttpClientHandler handler = new HttpClientHandler();
handler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) =>
{
if (cert.Issuer.Equals("CN=localhost"))
return true;
return errors == System.Net.Security.SslPolicyErrors.None;
};
var httpclient = new HttpClient(handler);
var test = await httpclient.PostAsync($"https://10.0.2.2:44393/" + uri, new StringContent(serializedItem, Encoding.UTF8, "application/json"));
Run Code Online (Sandbox Code Playgroud)
但问题是我从未输入 ServerCertificateCustomValidationCallback。
我也尝试过
ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, …Run Code Online (Sandbox Code Playgroud) 我的目标:在Android programmitcally中创建一个EAP WiFi配置 - 包括CA证书.
问题:如何以编程方式安装CA证书(然后在EAP WiFi配置中引用该证书)?
我发现了一个非常有用的链接,允许我在这里创建和保存EAP WiFi配置: 如何在Android中以编程方式创建和读取WEP/EAP WiFi配置?
但是,假设您已在设备上安装了CA证书.我想在我的应用程序中安装证书 - 从应用程序中的资源,或从服务器发送.
这甚至可能吗?(在这种情况下,生根不是一种选择.)如果是这样,怎么样?
附加信息...
我还找到了一种向KeyStore添加证书的方法:https: //stackoverflow.com/a/4490543/1172101
但是,这专门用于创建安全套接字并通过HTTPS连接.我想使用WiFi证书.
不幸的是,我还没有找到一种以编程方式安装CA证书的方法 - 从应用程序中.
但是,可以通过Android中的Web浏览器安装证书.因此,解决方案(目前)是:启动一个意图,在Web浏览器中打开一个直接转到CA证书的URL.
这有效但有一些挑战:
这导致了一些问题:
如果您需要任何澄清,请告诉我.
这是我的HTTP JSON
{
"User": {
"Name": "Compulsary","Password": "Compulsary" }
}
Run Code Online (Sandbox Code Playgroud)
我必须使用HTTPS POST请求发布到服务器.当我尝试发送请求时,我收到SSL服务器证书异常.我该如何解决这个问题?
我试过了什么?
我已经尝试使用HTTPPost带HTTPClient.SSL异常.我也试过使用URLConnection并忽略了SSL证书的检查.我得到401和405响应代码.
问题陈述:
将上述POST请求发送到服务器(请求是安全的,接受https).如何在android中实现这一点?
我试过这个,我的代码,我得到405错误?
// always verify the host - dont check for certificate
final static HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
};
/**
* Trust every server - dont check for any certificate
*/
private static void trustAllHosts() {
// Create a trust manager that does not validate certificate chains …Run Code Online (Sandbox Code Playgroud) 我有一个具有登录屏幕的应用程序,有两个选项,1个用twitter登录,2个用户名和密码.
这个应用程序在商店现场直播,但是,我目前正在收到一些拒绝api.parse.com连接的报告.我已经在多个设备上进行了测试,并且连接正常.
除了服务器出现问题之外,是否还有任何原因可能会拒绝解析连接?设备imei等可以发挥作用吗?我发现这种情况很不寻常,一些人而不是其他人正在发生这种情况.另外,我最终会以这种方式失去很多用户.
任何指导表示赞赏.
如果有人对此有任何了解,我真的很感激任何帮助,parse.com状态说它完全可以操作,不再有解析论坛了,如果有人能给我一些见解它会很棒
我们有一个内部 CA 服务器。
我们有一个 Android 应用程序,应该通过 https 与我们的网络服务器进行通信,并已生成所需的证书。当我们通过应用程序连接到服务器时,它会失败并显示当前的堆栈跟踪:
Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
Run Code Online (Sandbox Code Playgroud)
但是当我们通过 Android Chrome 浏览服务器时,它可以工作,并且我们会得到一个绿色的钥匙锁。我们已在 Android 设备的设置下上传了证书。因此它列在用户证书下。
我的问题是:我需要按代码做任何事情吗?我认为该应用程序会查看手机上的证书并使用它。Chrome 似乎就是这么做的。但一些指南告诉我,我手动创建了一个密钥库并将其提供给 SSLFactory(链接到指南)。但在其他页面上,这似乎应该是开箱即用的......
有人能指出我正确的方向吗?
android ×5
ssl ×2
android-wifi ×1
asp.net-core ×1
c# ×1
ca ×1
certificate ×1
https ×1
java ×1
maui ×1
xamarin ×1