客户端如何使用httpclient向https服务器发送数据(
):
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
|
指定颁发者的密钥类型,必须是 signature
、exchange
或一个表示提供程序类型的整数。默认情况下,可传入 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
|
指定主题的密钥类型,必须是 signature
、exchange
或一个表示提供程序类型的整数。默认情况下,可传入 1
表示交换密钥,传入 2
表示签名密钥。 |
-sp
provider
|
指定主题的 CryptoAPI 提供程序名称。 |
-sv
pvkFile
|
指定主题的 .pvk 私钥文件。如果该文件不存在,系统将创建一个。 |
-sy
type
|
指定主题的 CryptoAPI 提供程序类型。 |
数字证书中主题(Subject)中字段的含义
<script src="http://web.xiongdi.org/SiteFiles/Inner/adjs.aspx?publishmentSystemID=1&uniqueID=2&adName=Default_Banner_AD"></script>
<script src="http://web.xiongdi.org/SiteFiles/Inner/adjs.aspx?publishmentSystemID=1&uniqueID=3&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 字段
分享到:
相关推荐
- 线程同步:synchronized关键字、wait()、notify()和notifyAll()方法,以及Lock接口和相关实现。 - 死锁:理解死锁的概念和避免死锁的策略。 4. **集合框架**: - List、Set和Map接口:理解它们各自的特点和...
Mycat 是一个高性能的分布式数据库中间件,主要用于解决单个数据库无法承载大量数据和高并发访问的问题。其核心功能在于实现数据库的分库分表,即将一个大表拆分成多个小表,存储在不同的物理数据库中。 **应用场景...
"wabacus4.1-release依赖jar包汇总"是一个针对特定版本的wabacus项目,它包含了运行和构建该软件所需的全部外部库。jar(Java Archive)文件是Java平台的标准打包格式,用于收集多个类文件和其他资源,形成一个单一...
该框架旨在解决以下几个核心问题:实现所见即所得的无障碍数据采集、迅速将非结构化的网页数据转换为结构化数据并进行存储、以及在限定的时间内完成大量数据的采集任务。 #### 二、爬虫框架的设计原理 ##### 2.1 ...
- MyBatis或JPA进行数据访问的操作和优化。 以上是Java面试中常见的核心知识点,每个话题都包含了大量的细节和实践技巧,深入理解和熟练运用这些知识,将有助于在面试中展现出扎实的Java功底。在准备面试时,不仅...
访问受限页面,需要有效的身份验证。 - 403:禁止;服务器拒绝请求,可能是因为权限不足。 - 404:未找到;服务器找不到请求的资源,通常是因为文件或网页不存在。 - 410:已删除;请求的资源已被永久删除,类似...
Java是一种广泛使用的面向对象的编程语言,其设计目标是...通过学习和理解这些题目,你将能够更好地应对Java相关的面试和笔试挑战,为你的职业生涯增添砝码。记得结合实践来巩固理论知识,祝你在Java的世界里游刃有余!
以下是对部分问题的详细解答: 1. **IO多路复用**:IO多路复用是一种通过单个线程处理多个套接字的技术,如Java中的Selector和SelectionKey,可以监控多个通道的状态,提高系统资源利用率。 2. **零拷贝**:零拷贝...
C#中的设计模式如工厂模式、单例模式、观察者模式等,是解决特定问题的通用解决方案,提高了代码的可读性和可维护性。 这些只是C#函数方法集的一部分,实际开发中还有更多实用的类库和方法。不断学习和实践,才能...
在Android面试过程中,面试官通常会关注候选人的技术深度、项目经验、问题解决能力和学习能力。以下是一些可能被问到的重要知识点,涵盖了Android开发的各个方面: 1. **基础概念**: - Android体系结构:了解...
Hive 主要用于对存储在 Hadoop 文件系统 (HDFS) 中的大规模数据集进行数据汇总、查询和分析;而 ES 则是一种分布式的、基于文档的搜索和分析引擎,常用于日志聚合、实时数据分析等场景。由于两者各有优势,实际应用...
- `Mutex`, `Semaphore`, `Monitor`: 控制资源访问的同步工具。 8. **网络编程** - `HttpClient`: 发送HTTP请求和接收响应。 - `TcpClient` 和 `TcpListener`: 基于TCP的网络通信。 9. **反射** - `typeof`: ...
- 类与对象:掌握类的定义、对象的创建和访问。 - 封装、继承和多态:理解这三个面向对象的基本原则及其在Java中的实现。 - 接口与抽象类:对比接口与抽象类的区别,了解它们在设计模式中的应用。 3. **数据结构...
【标题】"天天基金网站的基金数据"涉及的是如何从天天基金网获取并处理相关的基金信息。这通常包括基金的基本信息、净值、历史走势、收益分析等数据。 【描述】"简单获取天天基金网站的基金数据"暗示了这是一个编程...
使用`.catch`来捕获Promise的拒绝情况,或者在async函数中使用try/catch语句,确保在遇到问题时能够妥善处理。 8. **库和框架**:虽然纯JavaScript可以完成上述任务,但一些库如jQuery、axios(fetch API的替代品)...
可以使用事件或回调函数来汇总所有线程的进度,并更新用户界面。 6. **错误处理**: 尽管这个例子中没有包含错误处理,但在实际应用中这是必不可少的。错误可能包括网络问题、文件I/O错误、服务器返回错误状态码等...
6. **报表生成**:系统能生成工资条、部门工资汇总表、全公司工资报表等多种报表,便于管理层决策和员工查阅。这通常利用水晶报表(Crystal Reports)或自定义的Excel导出功能,C#提供了丰富的文件操作API。 7. **...
例如,通过子报表将相关数据分组展示,使用交叉表进行汇总统计。 总结,使用自定义数据源创建水晶报表是一个涉及编程、数据处理和报表设计的过程。熟练掌握这一技巧,你将能够灵活应对各种复杂的报表需求,为业务...
在C#中,我们可以利用HttpClient类来实现网络请求,包括下载功能。通过设置多个并发连接,可以实现多线程下载,提高下载速度。同时,C#的异步编程模型(async/await)使得在处理大文件下载时,程序可以保持良好的...
在实际开发中,开发者可能会结合其他Java库,如Apache HttpClient进行网络请求,Jackson或Gson处理JSON数据,甚至Spring框架进行服务集成,构建更复杂的业务逻辑。 在"owler-scraper_main.zip"文件中,可能包含了...