博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Keytool创建服务器自签名证书
阅读量:5870 次
发布时间:2019-06-19

本文共 2563 字,大约阅读时间需要 8 分钟。

hot3.png

keytool命令的基本信息

#keytool --help密钥和证书管理工具命令: -certreq            生成证书请求 -changealias        更改条目的别名 -delete             删除条目 -exportcert         导出证书 -genkeypair         生成密钥对 -genseckey          生成密钥 -gencert            根据证书请求生成证书 -importcert         导入证书或证书链 -importpass         导入口令 -importkeystore     从其他密钥库导入一个或所有条目 -keypasswd          更改条目的密钥口令 -list               列出密钥库中的条目 -printcert          打印证书内容 -printcertreq       打印证书请求的内容 -printcrl           打印 CRL 文件的内容 -storepasswd        更改密钥库的存储口令使用 "keytool -command_name -help" 获取 command_name 的用法

当然,由于某些原因,一些参数被隐藏了,请参考如下数据

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算法

 

1.生成根证书keystore

1.生成根证书keystore

注意,如果是iOS使用的证书

必须导出iOS端需要的p12文件

-keysize 2048[苹果要求证书至少2048]

-sigalg必须符合

  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

服务器必须支持TLSv1.2及以上版本

 

2.添加中间人证书密钥对到keystore中

2.添加中间人证书

3.生成请求密钥文件csr

3.生成请求密钥文件csr

4.使用root ca对中间人证书签名

4.生成服务端信任证书

5.将中间人cer中的密钥对导入到keystore

5.将服务端信任证书导入keystore中

6.导出客户端信任证书

6.导出客户端信任证书

7.查看证书库信息

7.查看证书库信息

通过如上步骤,我们生成如下文件

8.所有证书文件

8.所有证书文件

一般用法,请参考上一篇博客《》

但是,我们这里需要再进行几个步骤

9.生成指定域名的证书密钥对到keystore中

10.生成指定域名的请求CSR文件

11.使用中间人对生成指定域名的证书签名

12.将指定域名的cer中的密钥导入keystore中

13.我们需要重新初始化重新加载keystore,并且重新初始化SSLSocket

KeyStore updateKeyStore(String port, String host) throws IOException, GeneralSecurityException{    synchronized (CERT_PATH)    {      if (!this.keyStore.containsAlias(host))      {        log.info(port + "Creating entry " + host + " in " + CERT_PATH_ABS);        KeyToolUtils.generateHostCert(CERT_PATH, this.storePassword, host, CERT_VALIDITY);      }      this.keyStore = getKeyStore(this.storePassword.toCharArray());    }    return this.keyStore;}

 

对于这些过程,我们推荐使用jorpha.jar工具包来完成。

 

如果是iOS,比较标准验证的实现方式请参

【 

 

参考:

jmeter源码 jorpha.jar ,ApacheJMeter_http.jar

转载于:https://my.oschina.net/ososchina/blog/826768

你可能感兴趣的文章
我的友情链接
查看>>
PHP - 如何打印函数调用树
查看>>
js闭包
查看>>
寒假。3.3.G - Common Child (最大公共子序)
查看>>
设计模式学习笔记--原型模式
查看>>
.Net 通过MySQLDriverCS操作MySQL
查看>>
JS Cookie
查看>>
ubuntu Unable to locate package sysv-rc-conf
查看>>
笔记:认识.NET平台
查看>>
cocos2d中CCAnimation的使用(cocos2d 1.0以上版本)
查看>>
【吉光片羽】短信验证
查看>>
MacBook如何用Parallels Desktop安装windows7/8
查看>>
gitlab 完整部署实例
查看>>
GNS关于IPS&ASA&PIX&Junos的配置
查看>>
七天学会ASP.NET MVC (四)——用户授权认证问题
查看>>
upgrade to iOS7,how to remove stroyboard?
查看>>
影响企业信息化成败的几点因素
查看>>
Thinkphp5 模型里别名alias不生效bug【已解决】
查看>>
SCCM 2016 配置管理系列(Part8)
查看>>
zabbix监控部署
查看>>