`

httpclient访问https相关问题汇总

 
阅读更多

客户端如何使用httpclient向https服务器发送数据(

unable to find valid certification path to requested target

):

http://www.open-china.net/blog/73709.html


证书导入java:

keytool -import -noprompt -keystore cacerts -storepass changedit -alias xfcstorea -file server.crt

 

问题:

javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names present

 

解决方法:

发现是之前使用keytool导入证书的Subject属性(CN=)与访问站点的地址不一致。

这里Subject的cn要与访问的地址一致,即要使用域名不能使用IP访问。当然制作证书时也可以添加subject alternative names 。

 

资料参考:http://hi.baidu.com/songzongquan/blog/item/0fe32e668741522eab184ce4.html

资料&问题:

 证书制作:

http://zhumeng8337797.blog.163.com/blog/static/10076891420104655332572/

数字证书制作:

1、创建根证书

makecert -n "CN=证书名称" -sv 私钥.pvk -b 开始时间 -e 截止时间 -a 算法 -l "你的与证书相关的网址" -r  公钥.cer

如:makecert -n "CN=木炭;O=激情燃烧的木炭" -sv root.pvk -b 01/01/2001 -e 12/31/2100 -a sha1 -l "http://www.woodcoal.cn/utils/search.html?wd=ca&click=1 " -r root.cer

2、创建二级证书

makecert -sv 二级证书私钥.pvk -iv 根证书私钥.pvk -ic 根证书公钥.cer -n "CN=二级证书名称" -b 开始时间 -e 截止时间 -a 算法 -l "你的与证书相关的网址" 二级证书公钥.cer

如:makecert -sv woodcoal.pvk -iv root.pvk -ic root.cer -n "CN=木炭测试;O=激情燃烧的木炭" -b 01/01/2001 -e 12/31/2100 -a sha1 -l "http://www.woodcoal.cn/utils/search.html?wd=ca&click=1 " woodcoal.cer

注意:

  • 运行后提示输入密码,设置密码或留空均可。
  • 制作二级证书时颁发者密码为根证书的密码。
  • 根证书加入“受信任的根证书颁发机构”后,证书签名的程序或服务器才能显示完整的颁发者名称。
  • 只有根证书加入“受信任的根证书颁发机构”时,二级证书才能显示完整,否则显示不能验证该证书。

使用说明:

证书创建工具生成仅用于测试目的的 X.509 证书。它创建用于数字签名的公钥和私钥对,并将其存储在证书文件中。此工具还将密钥对与指定发行者的名称相关联,并创建一个 X.509 证书,该证书将用户指定的名称绑定到密钥对的公共部分。

Makecert.exe 包含基本选项和扩展选项。基本选项是最常用于创建证书的选项。扩展选项提供更多的灵活性。

makecert [options] outputCertificateFile

outputCertificateFile :测试 X.509 证书要写入的 .cer 文件的名称。

基本选项

选项 说明
-n x509name 指定主题的证书名称。此名称必须符合 X.500 标准。最简单的方法是在双引号中指定此名称,并加上前缀 CN= ;例如,"CN=myName "。
-pe 将所生成的私钥标记为可导出。这样可将私钥包括在证书中。
-sk keyname 指定主题的密钥容器位置,该位置包含私钥。如果密钥容器不存在,系统将创建一个。
-sr  location 指定主题的证书存储位置。Location  可以是 currentuser (默认值)或localmachine
-ss store 指定主题的证书存储名称,输出证书即存储在那里。
-#  number 指定一个介于 1 和 2,147,483,647 之间的序列号。默认值是由 Makecert.exe 生成的唯一值。
-$  authority 指定证书的签名权限,必须设置为 commercial (对于商业软件 发行者使用的证书)或 individual (对于个人软件 发行者使用的证书)。
-? 显示此工具的命令语法和基本选项列表。
-! 显示此工具的命令语法和扩展选项列表。

 

扩展选项

选项 说明
-a  algorithm 指定签名算法。必须是 md5 (默认值)或 sha1
-b mm/dd/yyyy 指定有效期的开始时间。默认为证书的创建日期。
-cy certType 指定证书类型。有效值是 end (对于最终实体)和 authority (对于证书颁发机构)。
-d name 显示主题的名称。
-e mm/dd/yyyy 指定有效期的结束时间。默认为 12/31/2039 11:59:59 GMT。
-eku oid [,oid ] 将用逗号分隔的增强型密钥用法对象标识符 (OID) 列表插入到证书中。
-h  number 指定此证书下面的树的最大高度。
-ic  file 指定颁发者的证书文件。
-ik keyName 指定颁发者的密钥容器名称。
-iky keytype 指定颁发者的密钥类型,必须是 signatureexchange  或一个表示提供程序类型的整数。默认情况下,可传入 1  表示交换密钥,传入 2  表示签名密钥。
-in  name 指定颁发者的证书公用名称。
-ip provider 指定颁发者的 CryptoAPI 提供程序名称。
-ir  location 指定颁发者的证书存储位置。Location  可以是 currentuser (默认值)或 localmachine
-is store 指定颁发者的证书存储名称。
-iv pvkFile 指定颁发者的 .pvk 私钥文件。
-iy pvkFile 指定颁发者的 CryptoAPI 提供程序类型。
-l link 到策略信息的链接(例如,一个 URL)。
-m  number 以月为单位指定证书有效期的持续时间。
-nscp 包括 Netscape 客户端身份验证扩展。
-r 创建自签署证书。
-sc  file 指定主题的证书文件。
-sky keytype 指定主题的密钥类型,必须是 signatureexchange  或一个表示提供程序类型的整数。默认情况下,可传入 1  表示交换密钥,传入 2  表示签名密钥。
-sp provider 指定主题的 CryptoAPI 提供程序名称。
-sv pvkFile 指定主题的 .pvk 私钥文件。如果该文件不存在,系统将创建一个。
-sy  type 指定主题的 CryptoAPI 提供程序类型。

 

数字证书中主题(Subject)中字段的含义

<script src="http://web.xiongdi.org/SiteFiles/Inner/adjs.aspx?publishmentSystemID=1&amp;uniqueID=2&amp;adName=Default_Banner_AD"></script>
<script src="http://web.xiongdi.org/SiteFiles/Inner/adjs.aspx?publishmentSystemID=1&amp;uniqueID=3&amp;adName=Default_Banner_AD"></script>

一般的数字证书产品的主题通常含有如下字段:

  • 公用名称 (Common Name) 简称:CN 字段,对于 SSL 证书,一般为网站域名;而对于代码签名证书则为申请单位名称;而对于客户端证书则为证书申请者的姓名;
  • 单位名称 (Organization Name) :简称:O 字段,对于 SSL 证书,一般为网站域名;而对于代码签名证书则为申请单位名称;而对于客户端单位证书则为证书申请者所在单位名称;
  • 证书申请单位所在地:
    • 所在城市 (Locality) 简称:L 字段
    • 所在省份 (State/Provice) 简称:S 字段
    • 所在国家 (Country) 简称:C 字段,只能是国家字母缩写,如中国:CN

其他 一些字段:

  • 电子邮件 (Email) 简称:E 字段
  • 多个姓名字段 简称:G 字段
  • 介绍:Description 字段
  • 电话号码:Phone 字段,格式要求 + 国家区号 城市区号 电话号码,如: +86 732 88888888
  • 地址:STREET  字段
  • 邮政编码:PostalCode 字段
  • 显示其他 内容 简称:OU 字段
分享到:
评论

相关推荐

    java面试笔试题大汇总

    - 线程同步:synchronized关键字、wait()、notify()和notifyAll()方法,以及Lock接口和相关实现。 - 死锁:理解死锁的概念和避免死锁的策略。 4. **集合框架**: - List、Set和Map接口:理解它们各自的特点和...

    Java面试宝典知识点汇总(精华版).pdf

    Mycat 是一个高性能的分布式数据库中间件,主要用于解决单个数据库无法承载大量数据和高并发访问的问题。其核心功能在于实现数据库的分库分表,即将一个大表拆分成多个小表,存储在不同的物理数据库中。 **应用场景...

    wabacus4.1依赖jar包汇总

    "wabacus4.1-release依赖jar包汇总"是一个针对特定版本的wabacus项目,它包含了运行和构建该软件所需的全部外部库。jar(Java Archive)文件是Java平台的标准打包格式,用于收集多个类文件和其他资源,形成一个单一...

    基于java社会化海量数据采集爬虫框架搭建设计与实现.docx

    该框架旨在解决以下几个核心问题:实现所见即所得的无障碍数据采集、迅速将非结构化的网页数据转换为结构化数据并进行存储、以及在限定的时间内完成大量数据的采集任务。 #### 二、爬虫框架的设计原理 ##### 2.1 ...

    最新最全Java面试题汇总

    - MyBatis或JPA进行数据访问的操作和优化。 以上是Java面试中常见的核心知识点,每个话题都包含了大量的细节和实践技巧,深入理解和熟练运用这些知识,将有助于在面试中展现出扎实的Java功底。在准备面试时,不仅...

    http状态码汇总及问题经验总结

    访问受限页面,需要有效的身份验证。 - 403:禁止;服务器拒绝请求,可能是因为权限不足。 - 404:未找到;服务器找不到请求的资源,通常是因为文件或网页不存在。 - 410:已删除;请求的资源已被永久删除,类似...

    125条常见的java面试笔试题汇总

    Java是一种广泛使用的面向对象的编程语言,其设计目标是...通过学习和理解这些题目,你将能够更好地应对Java相关的面试和笔试挑战,为你的职业生涯增添砝码。记得结合实践来巩固理论知识,祝你在Java的世界里游刃有余!

    最热门的Java 网络与操作系统面试题汇总

    以下是对部分问题的详细解答: 1. **IO多路复用**:IO多路复用是一种通过单个线程处理多个套接字的技术,如Java中的Selector和SelectionKey,可以监控多个通道的状态,提高系统资源利用率。 2. **零拷贝**:零拷贝...

    C#函数方法集,汇总c#.net常用函数和方法集

    C#中的设计模式如工厂模式、单例模式、观察者模式等,是解决特定问题的通用解决方案,提高了代码的可读性和可维护性。 这些只是C#函数方法集的一部分,实际开发中还有更多实用的类库和方法。不断学习和实践,才能...

    Android面试汇总

    在Android面试过程中,面试官通常会关注候选人的技术深度、项目经验、问题解决能力和学习能力。以下是一些可能被问到的重要知识点,涵盖了Android开发的各个方面: 1. **基础概念**: - Android体系结构:了解...

    hive中定义的复杂数据类型导入到es中问题总结.doc

    Hive 主要用于对存储在 Hadoop 文件系统 (HDFS) 中的大规模数据集进行数据汇总、查询和分析;而 ES 则是一种分布式的、基于文档的搜索和分析引擎,常用于日志聚合、实时数据分析等场景。由于两者各有优势,实际应用...

    C#函数方法集,汇总c#.net常用函数和方法集TXT格式,非常好的教程。

    - `Mutex`, `Semaphore`, `Monitor`: 控制资源访问的同步工具。 8. **网络编程** - `HttpClient`: 发送HTTP请求和接收响应。 - `TcpClient` 和 `TcpListener`: 基于TCP的网络通信。 9. **反射** - `typeof`: ...

    爆肝三十天!我汇总了整个B站最完整的Java面试八股文,基础进阶到高频重点,只有1000集,能跟我再刷一遍吗?

    - 类与对象:掌握类的定义、对象的创建和访问。 - 封装、继承和多态:理解这三个面向对象的基本原则及其在Java中的实现。 - 接口与抽象类:对比接口与抽象类的区别,了解它们在设计模式中的应用。 3. **数据结构...

    天天基金网站的基金数据

    【标题】"天天基金网站的基金数据"涉及的是如何从天天基金网获取并处理相关的基金信息。这通常包括基金的基本信息、净值、历史走势、收益分析等数据。 【描述】"简单获取天天基金网站的基金数据"暗示了这是一个编程...

    批量HTML页面数据读取

    使用`.catch`来捕获Promise的拒绝情况,或者在async函数中使用try/catch语句,确保在遇到问题时能够妥善处理。 8. **库和框架**:虽然纯JavaScript可以完成上述任务,但一些库如jQuery、axios(fetch API的替代品)...

    C#关于文件下载的小例子

    可以使用事件或回调函数来汇总所有线程的进度,并更新用户界面。 6. **错误处理**: 尽管这个例子中没有包含错误处理,但在实际应用中这是必不可少的。错误可能包括网络问题、文件I/O错误、服务器返回错误状态码等...

    (C#)工资管理系统.rar

    6. **报表生成**:系统能生成工资条、部门工资汇总表、全公司工资报表等多种报表,便于管理层决策和员工查阅。这通常利用水晶报表(Crystal Reports)或自定义的Excel导出功能,C#提供了丰富的文件操作API。 7. **...

    使用自定义数据源创建水晶报表

    例如,通过子报表将相关数据分组展示,使用交叉表进行汇总统计。 总结,使用自定义数据源创建水晶报表是一个涉及编程、数据处理和报表设计的过程。熟练掌握这一技巧,你将能够灵活应对各种复杂的报表需求,为业务...

    无忧IT下载工具--仿flashget

    在C#中,我们可以利用HttpClient类来实现网络请求,包括下载功能。通过设置多个并发连接,可以实现多线程下载,提高下载速度。同时,C#的异步编程模型(async/await)使得在处理大文件下载时,程序可以保持良好的...

    Java_Owler Scraper API是一个创新的工具,用于从Owler检索广泛的业务数据。利用它来提取公司信息.zip

    在实际开发中,开发者可能会结合其他Java库,如Apache HttpClient进行网络请求,Jackson或Gson处理JSON数据,甚至Spring框架进行服务集成,构建更复杂的业务逻辑。 在"owler-scraper_main.zip"文件中,可能包含了...

Global site tag (gtag.js) - Google Analytics