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)中字段的含义

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

  • 公用名称 (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 字段
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值