前言

  • jdk 1.8
  • OS:redhat 7.0
  • linux 命令的换行符为 \
  • window 命令的换行符为 ^。本文中的命令在 redhat 上进行的测试。如果使用windows时,将下面的命令中的 \ 替换为 ^

使用Keytool工具生成证书及签名完整步骤

  1. 创建证书库(keystore)及证书(Certificate)
  2. 生成证书签名请求(CSR)
  3. 将已签名的证书导入证书库

下面以为”www.mydomain.com“域名制作数字证书为例进行操作。

创建证书库(keystore)及证书(Certificate)

命令如下:

keytool -genkeypair \-alias www.mydomain.com \-keyalg RSA \-keysize 4096 \-keypass mypassword \-sigalg SHA256withRSA \-dname "cn=www.mydomain.com,ou=xxx,o=xxx,l=Beijing,st=Beijing,c=CN" \-validity 3650 \-keystore www.mydomain.com_keystore.jks \-storetype JKS \-storepass mypassword

解释:

  • keytool 是jdk提供的工具,该工具名为”keytool“
  • -alias www.mydomain.com 此处”www.mydomain.com“为别名,可以是任意字符,只要不提示错误即可。因一个证书库中可以存放多个证书,通过别名标识证书。
  • -keyalg RSA 此处”RSA“为密钥的算法。可以选择的密钥算法有:RSA、DSA、EC。
  • –keysize 4096 此处”4096“为密钥长度。keysize与keyalg默认对应关系:
    2048 (when using -genkeypair and -keyalg is “RSA”)
    1024 (when using -genkeypair and -keyalg is “DSA”)
    256 (when using -genkeypair and -keyalg is “EC”)
  • -keypass mypassword 此处”mypassword “为本条目的密码(私钥的密码)。最好与storepass一致。
  • -sigalg SHA256withRSA 此处”SHA256withRSA“为签名算法。keyalg=RSA时,签名算法有:MD5withRSA、SHA1withRSA、SHA256withRSA、SHA384withRSA、SHA512withRSA。keyalg=DSA时,签名算法有:SHA1withDSA、SHA256withDSA。此处需要注意:MD5和SHA1的签名算法已经不安全。
  • -dname “cn=www.mydomain.com,ou=xxx,o=xxx,l=Beijing,st=Beijing,c=CN” 在此填写证书信息。“CN=名字与姓氏/域名,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码”
  • -validity 3650 此处”3650“为证书有效期天数。
  • -keystore www.mydomain.com_keystore.jks 此处”www.mydomain.com_keystore.jks“为密钥库的名称。此处也给出绝对路径。默认在当前目录创建证书库。
  • -storetype JKS 此处”JKS “为证书库类型。可用的证书库类型为:JKS、PKCS12等。jdk9以前,默认为JKS。自jdk9开始,默认为PKCS12。
  • -storepass mypassword 此处”mypassword “为证书库密码(私钥的密码)。最好与keypass 一致。

说明:
上述命令,需要将 -dname 参数替换(尤其时域名要写对)、密码更改即可,其它可保持不变。

生成证书签名请求(CSR)

命令如下:

keytool -certreq -keyalg RSA \-alias www.mydomain.com \-keystore www.mydomain.com_keystore.jks \-storetype JKS \-storepass mypassword \-file www.mydomain.com_certreq.csr

解释:
-file www.mydomain.com_certreq.csr 此处”www.mydomain.com_certreq.csr “为证书签名请求文件。

说明:
将”www.mydomain.com_certreq.csr “文件发送给证书签名机构,然后等待证书签名机构将签名的证书发回,再进行下一步。

将已签名的证书导入证书库

如果到了这步,应该会拿到两个证书。一个是签名机构的根证书(假定为GlobalSign_cert.cer),一个是www.mydomain.com的已签名证书(假定为www.mydomain.com_cert.cer)。两个证书均导入到证书库(www.mydomain.com_keystore.jks)中。

导入签名机构的根证书:

keytool -import -trustcacerts \-keystore www.mydomain.com_keystore.jks \-storepass mypassword \-alias root_GlobalSign \-file GlobalSign_cert.cer

说明:
alias和file两个参数进行替换。

导入www.mydomain.com的已签名证书

keytool -import -trustcacerts \-keystore www.mydomain.com_keystore.jks \-storepass mypassword \-alias www.mydomain.com \-file www.mydomain.com_cert.cer

说明:
alias参数要与生成时一致,file参数进行替换。

辅助命令

查看证书库

keytool -list -v \-keystore www.mydomain.com_keystore.jks \-storepass mypassword

查看证书签名请求

keytool -printcertreq  -file www.mydomain.com_certreq.csr

查看已签名证书

keytool -printcert -file GlobalSign_cert.cer
keytool -printcert -file www.mydomain.com_cert.cer

【SSL】使用Keytool工具生成证书及签名完整步骤相关推荐

  1. linux使用keytool生成证书库,使用JDK自带的keytool工具生成证书

    一.keytool 简介 keytool 是java用于管理密钥和证书的工具,它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及 ...

  2. 使用Keytool工具生成证书Keystore和证书签名请求文件

    keytool的几个常用的命令. 1.创建证书 2.查看证书库 3.导出证书文件 4.导入证书的信息 5.查看证书信息 6.删除密钥库中的条目 7.修改证书条目的口令 ---------------- ...

  3. 数字证书、数字签名的实现使用以及keytool工具生成私钥公钥

    数字证书.数字签名的实现使用以及keytool工具生成私钥公钥 数字签名 数字证书 数字签名的实现 keytool工具 基本命令 生成私钥公钥 导出公钥 数字签名 数字签名(又称公钥数字签名)是只有信 ...

  4. java生成csr_使用Keytool工具生成CSR

    使用Keytool工具生成CSR 发布时间:2018-03-02 15:55:57 keytool是JDK中工具,对JDK版本要求不高,但基于现在JDK版本的安全性考虑,建议使用JDK8及以上版本 C ...

  5. JAVA Keytool工具生成Keystore和Truststore文件

    JAVA Keytool工具生成Keystore和Truststore文件 文章目录 JAVA Keytool工具生成Keystore和Truststore文件 生成含有一个私钥的keystore文件 ...

  6. 【Android 教程系列第 27 篇】如何使用 Keytool 工具生成 keystore 签名文件

    这是[Android 教程系列第 27 篇],如果觉得有用的话,欢迎关注专栏. 文章目录 一:Keytool 是什么? 二:Keytool 需要安装吗? 三:Keytool 密钥的存储形式 四:Key ...

  7. 使用keytool工具常用证书转换

    使用keytool工具常用证书转换 p12 转 jks keytool -importkeystore -srckeystore keystore.p12 -srcstoretype PKCS12 - ...

  8. SpringCloud工作笔记030---使用java提供的keytool来生成证书

    JAVA技术交流QQ群:170933152 ----------------------------------------------------------- Keytool 是一个Java 数据 ...

  9. fiddler抓包工具:生成证书

    转载自:https://www.cnblogs.com/FR-Long/p/7255388.html fiddler抓包工具: 先对fiddler作一个简单描述: Fiddler是一个调试代理工具,它 ...

最新文章

  1. python在线编辑器编译excel_python在线编译器的简单原理及简单实现代码
  2. java deep clone util_Java Clone深拷贝与浅拷贝的两种实现方法
  3. mysql的server_id怎么设置_MySQL Server-id踩到的坑
  4. [网络安全提高篇] 一一三.Powershell恶意代码检测 (1)论文总结及抽象语法树(AST)提取
  5. 《史蒂夫·乔布斯传》官方正式中文版电子书(高清晰完整版)
  6. 论项目整体管理-软考论文整理一
  7. n位吸血鬼数字的算法
  8. ModifyStyle
  9. 解决Win10任务栏不显示电池电量的问题
  10. 数学建模之层次分析法及其应用
  11. 死链对网站的影响、产生过程、解决办法汇总
  12. php通过imap获取腾讯企业邮箱信息后的解码处理
  13. 月老在线牵盲盒/交友盲盒/一元交友/存取小纸条盲盒/分销功能
  14. 计算机内存采用什么存储模式,计算机内存模型
  15. pip download与pip install简介
  16. ffmpeg源码中ffplay音视频同步原理及实现
  17. 11.1 常用的包(熟悉) | 拉勾Java就业急训营
  18. 第 2-4 课:表格组件详解(Table 和 Data Tables)
  19. 一文读懂RAM、ROM、SRAM、DRAM、SDRAM等内存概念
  20. 单商户商城系统功能拆解26—营销中心—限时秒杀

热门文章

  1. 网络安全系列之三十五 缓冲区溢出
  2. 在线网站原型设计工具Cacoo
  3. XML 新手最佳入门教程
  4. Maven:Generating Project in Batch mode 卡住问题
  5. 关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案
  6. C#和Java详细描述
  7. PHP7 serialize_precision 配置不当导致 json_encode() 浮点小数溢出错误
  8. redis-查看日志
  9. CentOS crontab定时任务不执行的解决
  10. mysql 分库分表的方法