我正在尝试在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) 我正在开发一个REST API,供我正在编写的移动应用程序使用,主要用于与数据库通信.
移动应用程序调用以下URL:
example.com/mobileapi/getinfo
Run Code Online (Sandbox Code Playgroud)
并且每次呼叫都携带一定的POST负载.
我不担心用户身份验证等.
但是,我担心的是,如果有人使用移动应用程序以及Fiddler或Wireshark等网络监控工具,他们可以记录所有被调用的URL以及所有POST参数.这将是创建自己的使用我的API的应用程序的足够信息.
我怎么能阻止这个?我考虑将密钥硬编码到我的应用程序中,并将其作为POST参数包含在每个请求中,但这也是可见的.