国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java Security:keytool工具使用說明

2019-11-14 22:50:26
字體:
來源:轉載
供稿:網友
java Security:keytool工具使用說明

Keytool用法說明

Keytool是一個key與cert的管理工具。使用keytool可以管理public key、PRivate key,以及與key之相關的certificate。

1、command和option說明1.1 command

使用keytool工具時,可以使用15種命令:

1.2 option

Option是命令的參數,要了解某個命令的參數可以使用keytool –command_name –help來獲取。例如:使用keytool –genkeypair –help可以查看genkeypair命令的參數說明:

這個命令中,有許多命令使用的參數是有默認值的,使用命令時可以不指定的,看看下表:

Option

默認值

-alias

“mykey”

-keyalg

“DSA” 使用-genkeypair命令時

“DES” 使用-genseckey命令時

-keysize

2048 使用 –genkeypair命令,并且-keyalg選項是”RSA”時

1024 使用 –genkeypair命令,并且-keyalg選項是”DSA”時

256 使用 –genkeypair命令,并且-keyalg選項是”EC”時

56 使用 –genseckey 命令,并且-keyalg選項是”DES”時

168 使用 –genseckey 命令,并且-keyalg選項是”DESede”時

-validity

90

-keystore

默認的的文件名是 .keystore ,是一個隱藏文件。

-storetype

默認值java.security中配置的,SUN指定的是JKS,可以人為修改

-file

如果是寫,值為stout,如果是讀,值為stdin

-protected

false

-sigalg

SHA1withDSA 如果生成KeyPair使用的時DSA算法

SHA256withRSA 如果生成KeyPair使用的時RSA算法

SHA256withECDSA 如果生成KeyPair使用的時EC算法

2、Commands

2.1 生成keypair并查看

genkeypair
-genkeypair{-alias alias} {-keyalg keyalg} {-keysize keysize} {-sigalg sigalg} [-dname dname] [-keypass keypass] {-startdate value} {-ext ext}* {-validity valDays} {-storetype storetype} {-keystore keystore} [-storepass storepass] {-providerClass provider_class_name {-providerArg provider_arg}} {-v} {-protected} {-Jjavaoption}

生成KeyPair,并且生成使用X.509 v3 自簽名的證書。

看下面的例子:

查看命令詳情,可以使用list命令(參見下面list命令),也可以使用JAVA程序來查看。

下面是一個Java程序查看的例子:

package com.fjn.other.security;import java.io.File;import java.io.FileInputStream;import java.security.Key;import java.security.KeyStore;import java.security.PrivateKey;import java.security.PublicKey;import java.security.cert.Certificate;import java.security.interfaces.DSAPrivateKey;import java.util.Enumeration;import org.junit.Test;public class KeyPaireReader {    public void read(String file, String passWord) throws Exception {        FileInputStream fis = null;        fis = new FileInputStream(new File(file));        KeyStore keystore = KeyStore.getInstance("JKS");        keystore.load(fis, password.toCharArray());        System.out.println(keystore.containsAlias("mykey"));        Enumeration<String> aliases=keystore.aliases();        while(aliases.hasMoreElements()){            String alias = aliases.nextElement();            String createDate = keystore.getCreationDate(alias)                    .toLocaleString();            System.out.println("createDate: " + createDate);            Key key = keystore.getKey(alias, password.toCharArray());            if (key != null && key instanceof PrivateKey) {                if ("DSA".equals(key.getAlgorithm().toUpperCase())) {                    DSAPrivateKey pik = (DSAPrivateKey) key;                    System.out.println(pik.getX());                }            }            Certificate[] certs= keystore.getCertificateChain(alias);            for (Certificate cert : certs) {                PublicKey puk = cert.getPublicKey();                System.out.println(puk);            }        }            }    @Test    public void test() throws Exception {        read("D://keytooltest//ca1.jks", "111111");    }}
View Code

上面程序執行結果:

list
-list{-alias alias} {-storetype storetype} {-keystore keystore} [-storepass storepass] {-providerName provider_name} {-providerClass provider_class_name {-providerArg provider_arg}} {-v | -rfc} {-protected} {-Jjavaoption}

打印出指定alias的信息,如果沒有指定alias,則顯示所有的。

下面的例子,就是打出了上面使用genkeypair生成的alias為mykey的key詳情:

2.2 證書簽名處理

這個過程涉及到3個命令:

certreq、gencert、importcert

1)機構A使用certreq生成一個證書簽名請求文件(CSR certificate sign request),生成的文件就代表一個請求。

2)CA(證書認證中心)接收到這個請求后,經過處理(使用gencert),會生成一個證書或者證書鏈。

3)機構A接收到響應,將證書導入(importcert)到keystore中。

在說明這個處理之前,先使用genkeypair生成2個keystore文件:

keytool -genkeypair -alias ca1 -keystore D:/keytooltest/ca1.jkskeytool -genkeypair -alias ca2 -keystore D:/keytooltest/ca2.jks

certreq

把請求放到文件中:

keytool -certreq -alias ca1 -keystore D:/keytooltest/ca1.jks -file D:/keytooltest/ca1_to_ca2.req

gencert
-gencert{-rfc} {-infile infile} {-outfile outfile} {-alias alias} {-sigalg sigalg} {-dname dname} {-startdate startdate {-ext ext}* {-validity valDays} [-keypass keypass] {-keystore keystore} [-storepass storepass] {-storetype storetype} {-providername provider_name} {-providerClass provider_class_name {-providerArg provider_arg}} {-v} {-protected} {-Jjavaoption}
keytool -gencert -alias ca2 -infile D:/keytooltest/ca1_to_ca2.req -outfile D:/keytooltest/ca2_to_ca1.cert -keystore D:/keytooltest/ca2.jks

importcert

官方學習資料:

http://docs.Oracle.com/javase/6/docs/technotes/tools/windows/keytool.html

http://docs.oracle.com/javase/7/docs/technotes/tools/windows/keytool.html

http://docs.oracle.com/javase/8/docs/technotes/tools/windows/keytool.html

深入了解:

http://www.ibm.com/developerworks/cn/java/j-lo-socketkeytool/index.html?ca=drs


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 策勒县| 洛南县| 山丹县| 井陉县| 鹤岗市| 开原市| 七台河市| 申扎县| 白山市| 抚松县| 吴桥县| 老河口市| 镇原县| 宜兰市| 碌曲县| 平武县| 连城县| 会宁县| 轮台县| 武威市| 涞源县| 浠水县| 山阴县| 花垣县| 夏津县| 扶绥县| 酒泉市| 周至县| 孟津县| 神农架林区| 正镶白旗| 平阳县| 榆社县| 黄龙县| 沂南县| 清涧县| 凌云县| 轮台县| 色达县| 申扎县| 鄂州市|