Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 连接到url时未对对等方进行身份验证_Java_Authentication - Fatal编程技术网

Java 连接到url时未对对等方进行身份验证

Java 连接到url时未对对等方进行身份验证,java,authentication,Java,Authentication,请原谅我的无知,我真的不知道我在做什么,因为这是我的第一个网络程序。我知道我试图访问的服务器不需要验证,因为有人帮我编辑了web.xml文件,删除了身份验证过滤器。但是,当尝试连接到url时,我收到以下错误: Exception in thread "main" javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated at sun.security.ssl.SSLSessionImpl.getPeerCertifi

请原谅我的无知,我真的不知道我在做什么,因为这是我的第一个网络程序。我知道我试图访问的服务器不需要验证,因为有人帮我编辑了web.xml文件,删除了身份验证过滤器。但是,当尝试连接到url时,我收到以下错误:

Exception in thread "main" javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
    at sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:397)
    at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:126)
    at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:437)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
    at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
    at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:643)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784)
    at ParseTesting.AccessURL.main(AccessURL.java:74)
如果你有什么想法,请把它们传给我。资料来源如下:

package ParseTesting;

import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Reader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import org.apache.commons.codec.binary.Base64;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

import java.security.cert.X509Certificate;


public class AccessURL {
    public static void main(String[] args) throws Exception {
        //final String server = "https://myurl.edited.for.web.post";
        final String username = "admin";
        final String password = "password";


        DefaultHttpClient client =  new DefaultHttpClient();


        HttpGet  httpget = new HttpGet(server);

        String authString = "admin:dangerous";
        System.out.println("auth string: " + authString);
        byte[] authEncBytes = Base64.encodeBase64(authString.getBytes());
        String authStringEnc = new String(authEncBytes);
        System.out.println("Base64 encoded auth string: " + authStringEnc);

        httpget.addHeader("Authorization", "Basic " + authStringEnc);
        HttpResponse response = client.execute(httpget);
        System.out.println(response);

        HttpEntity entity = response.getEntity();
        String str = EntityUtils.toString(entity);
        }
}

远程主机的SSL证书无法使用Java客户端可用的CA证书向已知CA根验证。如果远程主机使用自签名证书,则需要将专用CA证书添加到Java客户端的密钥库中。如果是商业证书,请将相应的根CA证书添加到密钥库