我正在尝试在Linux服务器和Android APP之间建立一个相互认证的SSL.到目前为止,我已经能够让应用程序使用服务器证书通过SSL进行通信,但是一旦我将服务器设置为仅接受客户端证书就停止工作.服务器配置似乎没问题,但我有点卡住了.我最好的猜测是客户端证书没有正确呈现给服务器,但不知道如何测试它.我尝试在我的OS X钥匙串中使用.pem作为客户端,但浏览器似乎不能使用该证书.然后,服务器证书再次完美,因为我可以实现https连接,APP接受我的未签名服务器证书.
我正在使用的代码是各种教程的组合,答案这是我收藏的主要内容:
这是我用于连接的两个主要类:1)此类处理JSON解析并执行请求
package edu.hci.additional;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.List;
import android.content.Context;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
public class JSONParser {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
// constructor
public JSONParser() {
}
// function get json from url
// …Run Code Online (Sandbox Code Playgroud)