使用Keytool、OpenSSL构建HTTPS单双向认证

首先介绍下操作过程中会遇到的几种文件格式

  • cer:是数字证书的一种编码格式。
  • pem:OpenSSL最为常见的密钥库文件。
  • csr:证书签发申请。
  • p12:属于PKCS#12标准,可作为Java中的密钥库或信任库直接使用。
  • jks:Java原生的密钥库/信任库文件

提示:单向和双向认证都是经过测试的,特别是双向认证测试过很多次。如果按步骤来的话应该是没有什么问题的。

使用KeyTool搭建HTTPS单向认证

KeyTool时Java中的数字证书管理工具,用于数字证书的申请、导入和撤销等证书管理操作,KeyTool与本地密钥库相关联,将私钥存于密钥库,公钥则以数字证书输出。

证书必要的信息(这里单独提出来):
证书拥有者名称(CN):一般是域名
组织单位(OU)
组织(O)
城市(L)
区(ST)
国家/地区( C )

1)创建未经CA认证的服务端证书
keytool -genkeypair -keyalg RSA -keysize 2048 -sigalg SHA1withRSA -validity 36000 -alias server.cn -keystore D:/certs/server.keystore -dname “CN=server.cn, OU=server, O=server, L=SC, ST=SC, C=CN”

参数解释:
-genkeypair:生成密钥对
-keyalg:密钥算法
-sigalg:数字签名算法
-validity:证书有效期
-alias:别名
-keystore:密钥库存储位置

2)导出证书(这里是创建自签发证书)
keytool -exportcert -alias server.cn -keystore D:/certs/server.keystore -file D:/certs/server.cer -rfc

参数解释:
-exportcert:证书导出操作
-alias:导别名
-keystore:密钥库文件
-file:导出文件路径
-rfc:以Base64编码格式输出

自签名证书虽然可以使用,但未经过CA机构认证,几乎没有任何法律效力,也毫无安全可言。
移除信任则输入:keytool -delete -alias server.cn -keystore D:\xxx.keystore -storepass 151310

3)生成签发申请
keytool -certreq -alias server.cn -keystore D:/certs/server.keystore -file D:/certs/server.csr -v

参数解释:
-certreq:生成数字证书签发申请操作
-alias:指定别名
-keystore:指定密钥库文件
-file:指定导出文件路径
-v:详细信息

如果要获取CA机构认证的数字证书,需要生成数字证书签发申请(CSR),经由CA机构认证并颁发,同时将认证后的证书导入本地密钥库和信任库。
4)导入信任库
keytool -importcert -trustcacerts -alias server.cn -file D:/certs/server.cer -keystore D:/certs/server.keystore

参数解释:
-importcert:导入数字证书
-trustcacerts:将数字证书导入信任库
-alias:指定别名
-file:指定数字证书文件路径
-keystore:指定密钥库文件

1——2——4:自签发证书,1——3——4:CA认证的证书

配置Tomcat配置文件server.xml并启动(Tomcat是8.5版本,建议相同)
Tomcat7需要将HTTP/1.1改为org.apache.coyote.http11.Http11Protocol
添加如下配置

<Connector
     port="8443" 
     protocol="HTTP/1.1" 
     SSLEnabled="true"  
     maxThreads="150" 
     scheme="https" 
     secure="true"  
     clientAuth="false" 
     sslProtocol="TLS" 
     keystoreFile="D:/certs/server.keystore" 
     keystorePass="151310"/>

修改hosts文件

127.0.0.1 server.cn

访问 https://server.cn:8443/
在这里插入图片描述

使用OpenSSL搭建HTTPS双向认证

OpenSSL下载地址,建议下载1.0.2版本
如果因为版本问题出现创建对象tsa_policy1 = 1.2.3.4.1时出现问题错误,网上有说安装Visual C ++ 2008 ,可以试一下。Redistributables。

下载完后配置环境变量
在这里插入图片描述
创建下列目录,我的是在D:\ca目录下,建议第一次和我一样。
在这里插入图片描述
index.txt

0

serial

00

修改bin/openssl.cfg,修改下面这两个地方。

dir		= D:/ca
organizationName	= supplied
(1)构建根证书

注意:使用openssl.exe需要去掉前面的openssl命令。
建议:将所有要求输入的密码设为一样,如我的就是全部为151310(设为自己的就好)

1)构建私钥
openssl genrsa -aes256 -out D:/ca/private/ca.key.pem 2048

参数解释
genrsa:产生RSA密钥命令
-aes256:使用AES算法(256位密钥)对产生的私钥加密。可选算法包括DES、DESede、IDEA、AES
-out:输出路径
2048:RSA密钥的长度

2)生成根证书签发申请
openssl req -new -key D:/ca/private/ca.key.pem -out D:/ca/private/ca.csr -subj “/C=CN/ST=SC/L=SC/O=ca/OU=ca/CN=ca.cn”

参数解释
req:产生证书签发申请命令
-new:新请求
-key:密钥
-out:输出路径
-subj:用户信息

3)自行签发根证书(可以将其发送给CA机构签发)
openssl x509 -req -days 10000 -CAcreateserial -sha1 -extensions v3_ca -signkey D:/ca/private/ca.key.pem -in D:/ca/private/ca.csr -out D:/ca/certs/ca.cer

参数解释
x509:签发X.509格式证书命令
-req:证书输入请求
-days:有效天数
-sha1:证书摘要算法
-extensions:按OpenSSL配置文件v3_ca项添加扩展
-signkey:自签名密钥
-in:输入文件
-out:输出文件

4)将数字证书转换为Java原生的信任库文件(JKS文件)
keytool -keystore D:/ca/certs/ca.jks -keypass 151310 -storepass 151310 -alias ca -import -trustcacerts -file D:/ca/certs/ca.cer

(2)构建服务器证书

1)构建密钥
openssl genrsa -aes256 -out D:/ca/private/server.key.pem 2048
2)生成服务器证书签发申请
openssl req -new -key D:/ca/private/server.key.pem -out D:/ca/private/server.csr -subj “/C=CN/ST=SC/L=SC/O=server/OU=server/CN=server”
3)使用根证书签发服务器证书
openssl x509 -req -days 3650 -sha1 -extensions v3_req -CA D:/ca/certs/ca.cer -CAkey D:/ca/private/ca.key.pem -CAserial D:/ca/ca.srl -CAcreateserial -in D:/ca/private/server.csr -out D:/ca/certs/server.cer

参数解释
x509:签发X.509格式证书命令
-req:证书输入请求
-days:有效天数
-sha1:证书摘要算法
-extensions:按OpenSSL配置文件v3_req项添加扩展
-CA:CA证书
-CAkey:CA证书密钥
-CAserial:CA证书序列化文件
-in:输入文件
-out:输出文件

4)将OpenSSL产生的数字证书转化为PKCS#12编码格式
openssl pkcs12 -export -clcerts -in D:/ca/certs/server.cer -inkey D:/ca/private/server.key.pem -out D:/ca/certs/server.p12
会有提示错误,不用理会。
在这里插入图片描述

参数解释
pkcs12:PKCS#12编码格式证书命令
-export:导出证书
-clcerts:仅导出客户证书
-inkey:输入密钥文件路径
-in:输入文件路径
-out:输出文件路径
(3)构建客户端证书

1)构建密钥
openssl genrsa -aes256 -out D:/ca/private/client.key.pem 2048
2)生成客户端证书签发申请
openssl req -new -key D:/ca/private/client.key.pem -out D:/ca/private/client.csr -subj “/C=CN/ST=SC/L=SC/O=client/OU=client/CN=client.cn”
3)使用根证书签发客户证书
openssl ca -days 3650 -in D:/ca/private/client.csr -out D:/ca/certs/client.cer -cert D:/ca/certs/ca.cer -keyfile D:/ca/private/ca.key.pem
4)转换为Java语言可以识别的PKCS#12编码格式
openssl pkcs12 -export -in D:/ca/certs/client.cer -inkey D:/ca/private/client.key.pem -out D:/ca/certs/client.p12

修改Tomcat的server.xml并启动

<Connector port="8443" protocol="HTTP/1.1"
		   SSLEnabled="true"
           maxThreads="150"
		   scheme="https" 
		   secure="true"
           clientAuth="true" 
		   sslProtocol="TLS"
           keystoreFile="D:/ca/certs/server.p12" 
		   keystorePass="151310" 
		   keystoreType="PKCS12" 
           truststoreFile="D:/ca/certs/ca.jks" 
		   truststorePass="151310" 
		   truststoreType="JKS"/> 

浏览器导入客户端证书client.p12,导入受信任证书办法机构ca.cer。访问 https://server.cn:8443/

在这里插入图片描述
最后放两张图加深一下印象(客户端与服务端几乎相同就没画了)
在这里插入图片描述
在这里插入图片描述

DFYoung
关注 关注
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
keytool+tomcat 向/双向认证的配置
08-09
NULL 博文链接:https://sgq0085.iteye.com/blog/1767923
keytool+tomcat配置HTTPS双向证书认证
04-24
资源中包含了关于如何使用keytool生成证书,如何在tomcat中配置,并且在java web中如何配置
基于openssl实现TCP双向认证
最新发布
CAir2的专栏
04-12 615
TCP实现openssl实现双向认证
JAVA实现的SSL/TLS双向认证源代码
02-02
压缩包里有客户端源码和服务器端源码,支持TCP的双向认证,也支持WEBSOCKET的双向认证,内附测试 wss的测试例子, 需要生成PKCS12的证书,导入浏览器才可以测试。
keytool生成证书,双向SSL认证配置的方法
12-01
keytool生成证书,双向SSL认证配置的方法,以Tomcat举例。包含步骤:一、为服务器生成证书;二、为客户端生成证书;三、让服务器信任客户端证书;四、让客户端信任服务器证书。
keytool建立双向认证
03-19
NULL 博文链接:https://snowolf.iteye.com/blog/682029
使用JAVA的keytool生成,jks证书,pfx证书,cer证书,搭建https服务器用
Site_Dave的博客
05-30 7340
jdk版本-JDK1.6以上版本 1.生成jks证书 在cmd命令中运行 cd %JAVA_HOME%/bin 转到 jdk路径 keytool工具说明: keytool -genkey -alias test(别名) -keypass 123123(私钥密码) -keyalg RSA(算法) -sigalg sha256withrsa(算法小类) -keysize 1024(密钥长度)...
使用keytoolopenssl工具生成SSL双向认证密钥对和证书库
MEdwardM的专栏
05-16 1386
一、引言 由于需要开发一个支持https双向认证的服务,开发期间需要自己生产ssl双向认证证书,服务是基于springboot的开发的,所以进行了一段时间的技术调研,以下是操作生成操作步骤 二、操作1、keystore以及服务器密钥对的生成keytool -genkeypair -alias server -keyalg RSA -validity 365 -keystore server.j
SpringBoot使用JKS或PKCS12证书实现https
ThinkPet
08-01 3364
可以利用jdk自带的keytool工具来生成证书文件,默认生成的是JKS证书cmd命令如下: 执行如下命令,并按提示填写证书内容,最后会生成server.keystore文件。
HTTPS证书配置(认证
Learning_LB的博客
09-22 1581
HTTPS证书配置(认证
HTTPS认证双向认证
milanac007的专栏
05-18 1037
对于使用AsyncHttpClient做网络请求的客户端而言1. 认证:中信蓝牙key广播报文(1170):020106 0A09434954494331313730 1016F0FFBD6D80DADF0000000000000000   31byte1BFF5444010001DC41A6D729E8BC0A393C5D622C9355721088D82C06  0226FF   31by...
https证书生成工具(openssl和jre(自带keytool)) for windows.rar
05-28
opensslkeytool都是生成https证书的工具,可以在windows上安装使用,附带一些操作说明,希望可以帮助大家
使用keytoolopenssl创建nginx或springboot可用的SSL证书用于HTTPS测试
青松逸暇
09-10 640
linux服务器,安装了jdk和openssl安装jdk网上很多了,openssl也可直接在线安装。
安全加密基础—基本概念、keytoolopenssl
01-02 1520
(1)本文不涉及源码、底层。只是讲解大概的密码演变过程和基本概念。能让接触到相关名词的人知道这些名词是干嘛的,为什么要有它。专业人士可以当作概念梳理,非专业人士可以当作科普。(2)本文你将了解到的概念:明文通信、无密钥密文通信、对称加密、非对称加密、信息摘要、数字签名、CA与数字证书、https、常用的密钥扩展名。(3)本文应用实践有:用java的Keytool生成密钥,keystore格式转pem,openssl生成私钥和证书。
HTTPS向/双向认证
ma815841356的博客
07-02 756
HTTPS向/双向认证基本概念原理认证流程双向认证流程 基本概念 keystore: keytool生成证书的存储库,用来存储若干条目(证书),每一条目包含公私钥,主体信息等。默认为用户目录下.keystore,相当于一个有密码保护的文件。 truststore: 与keystore格式相同,只是为区分keystore用来存放信任的证书的新的库,不存密钥等信息。 der:证书编码格式,证书结构体转换为二进制格式。 pem:证书编码格式,对der二进制编码的base64字符,包含—begin—,---
数据和安全②HTTPS向和双向认证
热门推荐
Zzhou1990的博客
07-08 1万+
前言 示例 使用SpringBoot模拟服务端和客户端,使用okhttp作为httpClient工具。 如果对https相关理论不太熟悉和理解的可以看上一篇数据和安全①加解密理论概述 Okhttp https设置 https://square.github.io/okhttp/https/ 证书在线格式转换 https://myssl.com/cert_convert.html 私钥格式转换 https://www.chinassl.net/ssltools/convert-key.html
linux下keytool生成证书_keytool证书管理
weixin_28721917的博客
01-12 422
keytool证书管理生成本地数字证书E:\keytool>keytool-genkeypair-keyalgRSA-keysize2048-sigalgSHA1withRSA-validity36000-aliaswww.cnivi.cn-keystorecnivi.keystore输入密钥库口令:再次输入新口令:您的名字与姓氏是什么?[Unknown]:cn...
keytool 用法总结
Free Coding
01-04 1734
内容概览: keytool的几个常用的命令。 1.创建证书 2.查看证书库 3.导出证书文件 4.导入证书的信息 5.查看证书信息 6.删除密钥库中的条目 7.修改证书条目的口令 -------------------------------------------------------------------------------------- 预备知识: keyto...
opensslkeytool生成rsa密钥及证书开发指南
u012361112的博客
04-30 3238
二、der编码与pem编码 我们使用程序代码或者openssl命令生成秘钥对时,会先在内存中生成数据,然后序列化到文件中。而数据序列化需要一种特定的编码格式——DER。DER 是distinguished encode rule 的简写,它是ASN.1编码标准的一种编码方式,该编码方式的输出是二进制而不是普通的文本。DER 编码二进制输出的文件将会是一个二进制文件。PEM是一个用来存储和发送密码学key、证书和其他数据的文件格式的事实标准。许多使用ASN.1的密码学标准(比如X.509和PKCS)都使用.
使用Keytool 工具生成的CSR和OpenSSL工具生成的CSR区别
02-07
Keytool是Java开发工具包中的一种命令行工具,用于...在生成CSR时,两者的主要区别在于使用的证书存储库不同,Keytool使用JKS格式的证书存储库,而OpenSSL使用PEM格式的证书存储库。此外,在命令行和参数上也有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

分类专栏

  • 分布式
  • JAVA基础 1篇
  • dubbo
  • nginx 5篇

最新评论

  • Spring Boot请求拦截及请求参数加解密

    码里法: 你这有问题啊,proceed()里边应该把你改完的参数放进去,否则到接口还是原来的数据,不生效的

  • clean channel shutdown(消息发送成功,ConfirmCallback ack返回为false)

    伊颦伊笑: 谢谢你,彦祖

  • clean channel shutdown(消息发送成功,ConfirmCallback ack返回为false)

    别人888: 谢谢你,彦祖

  • clean channel shutdown(消息发送成功,ConfirmCallback ack返回为false)

    爱吃白菜的鱼: 谢谢你,彦祖

  • clean channel shutdown(消息发送成功,ConfirmCallback ack返回为false)

    Witte The Whistler�: 谢谢你,彦祖

大家在看

  • CP AUTOSAR标准之MemoryDriver(AUTOSAR_CP_SWS_MemoryDriver) 1
  • 常用镜像资源总结 488
  • 【LLM应用】大模型在编写代码中的应用 930
  • 7-82 打印沙漏
  • Nature Electronics|微器件在柔性基底上的高密度集成(可穿戴电子/界面调控/电子皮肤/柔性电子) 692

最新文章

  • 锁的升级过程——偏向锁、轻量级锁、重量级锁
  • session、token、jwt区别分析
  • 跨域及跨域请求伪造详解
2020年8篇
2019年37篇
2018年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

哆哆女性网森林冰火人双人闯关休闲零食起名给龙凤胎宝宝起人名属牛宝宝起名大全大全李素欣中欧投资协定被冻结外交部回应订阅号起名曹操字什么2020年出生的小孩起名带什么字好废品收购起名欧起名国学起名常用字大全分析我的娘家我的婆免费在线门店起名深夜爽爽动态图无遮无挡麦玲玲起名讲究东京esp漫画小朋友起名字大全奶茶店取名起名给百货店起名大全农厉2018年10月23出生的男孩起名永恒的爱情老黄历起名八字ps4破解岑起名康熙字典在线查字笔画起名取名起名大全宝典空间刷留言软件在线动画黄金路淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化