导入跟导出证书(转)

为了解释清楚如何输出和输入证书,我会使用我自己的 HTTPS 服务器。这个服务器在第一部分中讨论过。然后,跟着下面的内容开始:

1、运行 HTTPS 服务器,像在第一部分中讨论的那样。

2、运行 ReadHttpsURL1:java ReadHttpsURL1 localhost。你同样会得到上面所述的异常。

3、使用下面的 keytool 命令导出服务器证书:

o 从 serverkeys 文件中导出别名为 qusay 的证书

o 将导出的证书保存在 server.cert 文件中,这个文件会由 keytool 创建

如你看到的那样,我根据要求输入了密码。成功输入密码之后,服务器证书被成功的导出并保存在 server.cert 中。

Prompt> keytool -export -keystore serverkeys -alias qusay -file server.cert

Enter keystore password: hellothere

Certificate stored in file

4、将文件 server.cert 拷贝到 ReadHttpsURL1 所在的目录。使用 keytool 创建一个新的 keystore 并将服务器的 server.cert 证书导入其中。这里的命令示例:

Prompt> keytool -import -keystore trustedcerts -alias qusay -file server.cert

这个命令会产生下面那样的输出。它要求输入密码,这是一个新的密码,用于 trustedcerts 这个 keystore 的。这个 keystore 由 keytool 创建。在输出信息的最后,它询问我是否愿意相信这个证书,我回答 yes。

Enter keystore password: clientpass

Owner: CN=localhost, OU=Training and Consulting, O=javacourses.com, L=Toronto, ST=Ontario, C=CA

Issuer: CN=localhost, OU=Training and Consulting, O=javacourses.com, L=Toronto, ST=Ontario, C=CA

Serial number: 3dcf988a

Valid from: Mon Nov 11 06:46:18 EST 2002 until: Sun Feb 09 06:46:18 EST 2003

Certificate fingerprints:

MD5: 37:35:4D:3A:2B:7E:B5:09:A5:41:B3:FA:E4:3C:1D:C4

SHA1: CB:7C:77:36:79:A2:37:26:E2:98:61:C2:9D:10:50:69:

99:F9:B9:1B

Trust this certificate? [no]: yes

Certificate was added to keystore

5、现在运行 ReadHttpsURL1 并告诉它哪里能找到证书。使用下面的命令:

Prompt> java -Djavax.net.ssl.trustStore=trustedcerts ReadHttpsURL1 localhost

这将会与你的 HTTPS 服务器联接、校验证书,如果正确,它会下载默认页面 index.html。

注意:信任管理器负责决定远端的证书是否值得信任。它使用下面的规则:

1、如果 javax.net.sll.trustStore 系统属性指定了信任库,那么信任管理器会使用提供的文件来检查证书。如果那个系统属性存在但指定的文件不存在,那么就没有使用任何信任库,会抛出一个 CertificateException 异常。

2、如果 javax.net.sll.trustStore 系统属性没有定义,那么它会去寻找默认的信任库:

如果在你的 java.home 目录的 lib/security 子目录下存在名为 jssecacerts 的信任库,那么使用的就是它。

如果 jssecacerts 不存在,但是 cacerts 存在 (它随 J2SDK 一起发行,含有数量有限的可信任的基本证书),使用的就是 cacerts。

在我的 Windows 2000 客户机中,java.home 目录是 c:\Program File\java\jre1.4.1\lib\security,在上例中,如果你将 trustedcerts 更名为 jssecacerts 并将其移动到 lib/security 子目录中,那么你以后就不需要在命令行指定 javax.net.ssl.trustStore 属性了。

如果你不知道 java.home 在哪里,这里有一小段代码可以让你找到它:

public class FindJavaHome {

public static void main(String argv[]) {

System.out.println(System.getProperty("java.home"));

}

}

=========================
说明:

cacerts: 自定义信任库密码是wshr.ut
testkeystore:证书库存放了服务器证书和对应的私钥.
my.cer: 被CA签名后的服务器证书,以导入testkeystore
HBCA.cer: CA的根证书,以导入到cacerts,testkeystore,需要导入IE.
测试单证02.pfx: CA签发的一个个人证书,需要导入到IE
MyHTTPSServerAuth.java : 实现SSL服务的JAVA代码.

我得jdk是j2sdk1.4.2_01的,我把上面的那些全放在JDK的bin目录下方便使用那个keytool来调试.
证书时我搭的一个CA来签的,.

部分过程:
C:\j2sdk1.4.2_01\bin>keytool -genkey -dname "CN=www.my.com,OU=hbca,O=hbca,L=wuhan,S=hubei,C=CN" -alias test -keyalg RSA -keystore testkeystore -keypass wshr.ut -storepass wshr.ut

C:\j2sdk1.4.2_01\bin>keytool -certreq -keystore testkeystore -alias test -file test.csr -storepass wshr.ut

C:\j2sdk1.4.2_01\bin>keytool -import -alias CA -file hbca.cer -keystore testkeystore
输入keystore密码: wshr.ut
Owner: C=CN, O=TEST, CN=HBCA
发照者: C=CN, O=TEST, CN=HBCA
序号: 2aed19e4a2900b69e9a307700439a1d1
有效期间: Thu Sep 22 11:36:25 CST 2005 至: Sat Jun 01 11:36:25 CST 2019
认证指纹:
MD5: DB:32:5B:CA:EB:79:D2:40:F4:5C:65:87:4F:8B:93:8D
SHA1: C3:68:DC:A5:1E:DC:A9:07:60:CF:5D:38:A3:4C:10:67:28:20:6F:A3
信任这个认证? [否]: y
认证已添加至keystore中

C:\j2sdk1.4.2_01\bin>keytool -import -alias test -file my.cer -keystore testkeystore
输入keystore密码: wshr.ut
认证回复已安装在 keystore中
C:\j2sdk1.4.2_01\bin>keytool -import -alias test -file hbca.cer -keystore cacerts
输入keystore密码: wshr.ut
Owner: C=CN, O=TEST, CN=HBCA
发照者: C=CN, O=TEST, CN=HBCA
序号: 2aed19e4a2900b69e9a307700439a1d1
有效期间: Thu Sep 22 11:36:25 CST 2005 至: Sat Jun 01 11:36:25 CST 2019
认证指纹:
MD5: DB:32:5B:CA:EB:79:D2:40:F4:5C:65:87:4F:8B:93:8D
SHA1: C3:68:DC:A5:1E:DC:A9:07:60:CF:5D:38:A3:4C:10:67:28:20:6F:A3
信任这个认证? [否]: y
认证已添加至keystore中

时间: 2024-12-15 01:46:54

导入跟导出证书(转)的相关文章

java jre 中导入导出证书

导入证书: 将所要导入的证书放到Javahome的jre/lib/security文件夹中 运行命令jre/bin/keytool-import -alias cacerts -keystore cacerts -file 证书名称 输入默认密码:changeit 导入过程中会交互询问是否信任该证书,输入 yes 导出证书 keytool -export -keystore serverkeys -alias qusay -file 证书名称

Postgres数据库中excel的导入和导出

使用Windows系统,excel的总是不可避免. Postgres版本为9.3.6:Windows 8.1 64位. 这里没有找到excel直接导入Postgres的方法,有一个工具是xlstopg,类似SQL Server的导入和导出数据向导,但不是开源的:可以到网上搜下玩玩(好像试用版只能导1000条记录),我在不知名网站上下了个企图是破解版,结果电脑中毒,花了两个晚上时间,电脑才幸而没有重装系统.我只能说有些网站太不是东西了,你说你里面很多插件(游戏的客户端.日历等乱七八糟的东西),我忍

Docker 容器的导入和导出操作

导出容器 导出容器是指 导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态,可以使用docker export 命令,该命令格式为 docker export CONTAINER. 查看所有容器如下: # docker ps -a CONTAINER ID        IMAGE                COMMAND             CREATED             STATUS                          PORTS       

ECMAScript 6的导入和导出:import 、export

一 基本语法 import { dog , person , hero } from './common.js'; import { hello,Plane } from './common.js'; import { car , rain } from './common.js'; import shrimp from './common.js'; console.log(lottery); console.log(dog,person,hero); hello(); let plane =

[转载]在SQL Server 中,如何实现DBF文件和SQL Server表之间的导入或者导出?

原来使用SQL Server 2000数据库,通过DTS工具很方便地在SQL Server和DBF文件之间进行数据的导入和导出,现在安装了SQL Server2005之后,发现其提供的“SQL Server导入导出向导”中的数据源没有原来的丰富,缺少对DBF文件的支持. 1.右击数据库,选择“任务”>“导入数据”,打开“SQL Server导入和导出向导”对话框.2.在“数据源”中选择Microsoft OLE DB Provider for Visual FoxPro,单击“属性”按钮,打开“

sqlite的csv的导入,导出

-----------------------------------以下这段,是十分容易百度到的,但它不是csv的导入导出的适用方法,更适合格式化输出,说白了就是方便人看,它会给长文本的字段数据添加空格和适当截断.这些对于需要后续程序处理的导出操作是致命的. 导入命令: .importsqlite> .import 文件名 表名注1: 不要忘了开头的点注2: 这条语句不能用分号结束. 非SQL不需要分号结束.注3: 需要查看默认的分隔符separator. 必须一致. 如果不一致可能导致sql

Oracle Imp and Exp (导入和导出) 数据 工具使用

Oracle 提供两个工具imp.exe 和exp.exe分别用于导入和导出数据.这两个工具位于Oracle_home/bin目录下. 导入数据exp 1 将数据库ATSTestDB完全导出,用户名system 密码123456 导出到c:\export.dmp中 exp system/[email protected] file=c:\export.dmp full=y 其中ATSTestDB为数据库名称,system为该数据库里的账户,123456为其密码. 2 将数据库中system用户与

oracle 字符集导入、导出 、转换

导入导出及转换 导入导出是我们常用的一个数据迁移及转化工具,因其导出文件具有平台无关性,所以在跨平台迁移中,最为常用. 在导出操作时,非常重要的是客户端的字符集设置,也就是客户端的NLS_LANG设置. NLS_LANG参数由以下部分组成: NLS_LANG=_. NLS_LANG各部分含义如下: LANGUAGE指定: -Oracle消息使用的语言 -日期中月份和日显示 TERRITORY指定 -货币和数字格式 -地区和计算星期及日期的习惯 CHARACTERSET: -控制客户端应用程序使用

SQL Server2012使用导入和导出向导时,用sql语句作为数据源,出现数据源类型会变成202或者203

用MS SqlServer2012进行数据导出时,使用的查询语句导出,但是出现了错误: "发现 xx个未知的列类型转换您只能保存此包" 点击列查看详细错误信息时,可以看到: [源信息]源位置: 192.168.1.97源提供程序: SQLNCLI11表: [查询]列: ItemSize列类型: 203SSIS 类型: (类型未知...)映射文件(到 SSIS 类型): C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Mapping