Apache HttpClient 和 PEM 证书文件

2023-11-23

我想以编程方式访问需要客户端证书的网站,该证书位于 PEM 文件中。在此应用程序中,我不想将它们添加到我的密钥库中,如果可以避免的话,请使用 keytool 或 openssl。我需要直接在代码中处理它们。

    HttpClient httpclient = new DefaultHttpClient();
    HttpGet httpget = new HttpGet("https://my.secure.site.com/url");

    // TODO: Specify ca.pem and client.pem here?

    HttpResponse response = httpclient.execute(httpget);
    HttpEntity entity = response.getEntity();

    if (entity != null) {
        entity.consumeContent();
    }

    httpclient.getConnectionManager().shutdown();

我如何随请求“发送”证书?


最简单的可能是使用 .p12 格式(尽管其他格式也可以正常工作 - 只是要小心 base64 块之外的额外行)并添加如下内容:

// systems I trust
System.setProperty("javax.net.ssl.trustStore", "foo");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");

// my credentials
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "cert.p12");
System.setProperty("javax.net.ssl.keyStorePassword", "changeit");

或者 - 使用类似的东西

    KeyStore ks = KeyStore.getInstance( "pkcs12" );
    ks.load( new FileInputStream( ....), "mypassword".toCharArray() );

    KeyStore jks = KeyStore.getInstance( "JKS" );
    ks.load(...

而是动态创建上面的内容。而不是依赖系统属性 - 使用如下内容:

    KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
    kmf.init(aboveKeyStore, "changeme".toCharArray());
    sslContext = SSLContext.getInstance("SSLv3");
    sslContext.init(kmf.getKeyManagers(), null, null);

这使其与密钥库分开。

DW.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache HttpClient 和 PEM 证书文件 的相关文章

随机推荐

  • 二进制减法 - Python

    我想做一个二进制计算器 但减法部分有问题 这是我的代码 我尝试根据我在该网站上找到的代码进行改编 maxlen max len s1 len s2 s1 s1 zfill maxlen s2 s2 zfill maxlen result c
  • 在 Twitter Bootstrap CSS 中覆盖“背景:透明!重要”

    有一个可以绘图的应用程序divs 以背景颜色作为其图形 这些 div 在屏幕上看起来很好 但是div打印为 PDF 时 s 消失 将该问题追溯到 Twitter Bootstrap CSS 当 Bootstrap CSS 不存在时 div
  • doFilter 没有被调用

    你能帮忙检查一下为什么 doFilter 没有被调用吗 web xml
  • 按后退按钮退出应用程序,而不是在 WebView 中向后导航

    我正在开发一个 WebView android 应用程序 我无法修复应用程序中的向后导航问题 我正在使用这段代码并尝试对此进行所有修改 public class DeviceActivity extends Activity private
  • 对于无符号数和有符号数的补码,哪些算术运算是相同的?

    我正在设计一个简单的玩具指令集和随附的模拟器 并且正在尝试找出支持哪些指令 在算术方面 我目前有无符号加法 减法 乘法和除法 但是 我似乎无法找到以下问题的明确答案 哪些算术运算符需要签名版本 哪些算术运算符的无符号和补码签名版本等效 例如
  • Spring - 是否可以在同一应用程序中使用多个事务管理器?

    我是 Spring 新手 我想知道是否可以在同一个应用程序中使用多个事务管理器 我有两个数据访问层 一个用于两个数据库 我想知道 如何在一层使用一个事务管理器 在另一层使用不同的事务管理器 我还不需要跨两个数据库执行事务 但我确实需要在每个
  • 在方法内部等待,直到捕获事件

    我在 C 中的一个方法上遇到了这个问题 我创建了一个从 dll 中调用函数的方法 其名为Phone GetLampMode Now Phone GetLampMode不返回任何东西 数据在事件中返回 onGetLampModeRespons
  • shell脚本中的“${!var}”是什么意思? [复制]

    这个问题在这里已经有答案了 我有一个具有以下条件的代码块 不确定它到底是做什么的 var args Some Text if var then echo var is not defined fi 这称为变量间接扩展 hello this
  • Android:如何获取按名称或按日期降序排列的目录列表?

    我能够做到这一点 File images new File path File imageList images listFiles new FilenameFilter public boolean accept File dir Str
  • Python 中的可索引弱有序集

    我想知道是否有一种简单的方法可以在 Python 中构建可索引的弱有序集 我尝试自己建造一个 这是我想出的 An indexable ordered set of objects which are held by weak referen
  • 将大型 *.war 部署到 tomcat 的最佳方式

    在开发过程中 我经常需要将一个大的 war 文件 45 MB 部署到远程测试服务器 通常我使用 scp 将文件复制到服务器 WEB INF lib 文件夹构成了 war 文件的最大部分 其中包括所有必需的库 spring apache cx
  • 如果内部div具有特定类,如何使用javascript隐藏父div

    好吧 假设我有很多 div 有些 div 的孩子有一个班级 其他 div 的孩子有不同的班级 我只想隐藏具有某个类别的孩子的 div 例如 div class mainDiv div class kulkul div class child
  • 通过反射向类添加新方法[重复]

    这个问题在这里已经有答案了 java中是否可以通过反射向类添加方法 public class BaseDomain public BaseDomain Field fields this getClass getDeclaredFields
  • 使用自签名证书从 https 服务器进行 React-native fetch()

    我正在尝试与具有自签名证书的 https 服务器进行通信 我可以从 NET 应用程序 使用 ServicePointManager ServerCertificateValidationCallback 事件 本机 iOs 应用程序 使用
  • 包装 malloc - C

    我是 C 初学者 在阅读 git 的源代码时 我发现了这个包装函数malloc void xmalloc size t size void ret malloc size if ret size ret malloc 1 if ret re
  • CSS文本装饰下划线颜色[重复]

    这个问题在这里已经有答案了 可能的重复 更改下划线颜色 是否可以仅更改文本下的线条颜色 我希望看到类似红色字母 下面有一条蓝线的东西 但我不知道如何完成此操作 对于谷歌同事 复制自重复的问题 这个答案已经过时了文字装饰颜色现在大多数现代浏览
  • Android O - 旧的启动前台服务仍然有效?

    因此 对于 Android O 如果您希望每小时接收的不仅仅是几次位置更新 您需要将服务作为前台服务运行 我注意到启动前台服务的旧方法似乎确实适用于 O IE startForeground NOTIFICATION ID getNotif
  • C++ 中接受“任何内容”的模板

    我有一个简单的模板结构 将字符串与值关联起来 template
  • 调用不存在的端点时收到 403 而不是 404

    这是 Spring Security 配置的典型部分 Override protected void configure HttpSecurity http throws Exception http csrf and cors disab
  • Apache HttpClient 和 PEM 证书文件

    我想以编程方式访问需要客户端证书的网站 该证书位于 PEM 文件中 在此应用程序中 我不想将它们添加到我的密钥库中 如果可以避免的话 请使用 keytool 或 openssl 我需要直接在代码中处理它们 HttpClient httpcl