搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
小桥流水78
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Three.js城市展示,可视化大屏_vue three.js 显示地图省份名字
2
Spark内核的设计原理
3
考研复试 - 机试模板_考研计算机机试材料
4
【软考软件评测师】2020年下案例分析历年真题_软件评测师历年真题
5
使用电脑前必须知道的电脑基础操作(持续更新中)_电脑操作基础
6
【人工智能】使用Python的dlib库实现人脸识别技术
7
贪吃蛇是怎么实现的,循环数组的魔力_贪吃蛇如何实现拐弯功能
8
数据库基础介绍(1)几种常见的数据库_信息管理与信息系统常用数据库
9
AttributeError: module 'cv2' has no attribute 'CV_HAAR_SCALE_IMAGE'
10
【图神经网络工具】PyTorch Geometric基础知识(一)
当前位置:
article
> 正文
Tomcat 配置Https 详解
作者:小桥流水78 | 2024-07-26 12:48:51
赞
踩
Tomcat 配置Https 详解
Https 是在 Http 的之下加入了SSL (Secure Socket Layer),安全的基础就靠这个SSL,SSL 位于 TCP/IP 和HTTP协议之间,其作用:
1> 认证用户和服务器,确保数据发送到正确的客户机和服务器 -> 验证证书
2> 加密数据以防止数据中途被窃取 -> 加密
3> 维护数据的完整性,确保数据在传输过程中不被改变 -> 摘要算法
Https 工作原理
Https 在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息,握手过程的简单描述如下:
1> 浏览器将自己支持的一套加密算法、HASH算法发送给网站
2> 网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息
3> 浏览器获得网站证书之后,开始验证证书的合法性,如果证书信任,则生成一串随机数字作为通讯过程中对称加密的秘钥,然后取出证书中的公钥,将这串数字以及HASH的结果进行加密,然后发给网站
4> 网站接收浏览器发来的数据之后,通过私钥进行解密,然后HASH校验,如果一致,则使用浏览器发来的数字串使加密一段握手消息发给浏览器
5> 浏览器解密,并HASH校验,没有问题,则握手结束。接下来的传输过程将由之前浏览器生成的随机密码并利用对称加密算法进行加密。握手过程中如果有任何错误,都会使加密连接断开,从而阻止了隐私信息的传输
服务器端会有一个证书,在交互过程中客户端需要去验证证书的合法性,对于权威机构颁发的证书当然会直接认为合法。对于自己造的证书,那么就需要去校验合法性了,也就是说只需要让OkHttp Client去信任这个证书就可以畅通的进行通信了。对于自签名的网站的访问,网上的部分的做法是直接设置信任所有的证书,对于这种做法肯定是有风险的
证书是单点登录认证系统中很重要的一把钥匙,客户端于服务器的交互安全靠的就是证书。如果以后真正在产品环境中使用肯定要去证书提供商去购买,也有免费的
CSR(Certificate Signing Request) : 数字证书签发申请
证书申请网站:
https://letsencrypt.org/
https://sg.godaddy.com/
http://www.verisign.com/
https://www.startssl.com/
Keytool
Keytool 是一个Java数据证书的管理工具 ,Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里,包含两种数据:
1> 密钥实体(Key entity)-密钥(secret key)或者是私钥和配对公钥(采用非对称加密)
2> 可信任的证书实体(trusted certificate entries)-只包含公钥.
参数说明
JDK中Keytool常用参数说明:
-genkey 在用户主目录中创建一个默认文件”.keystore”,还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书(在没有指定生成位置的情况下,keystore会存在用户系统默认目录)
-alias 产生别名 每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写
-keystore 指定密钥库的名称(产生的各类信息将不在.keystore文件中)
-keyalg 指定密钥的算法 (如 RSA DSA,默认值为:DSA)
-validity 指定创建的证书有效期多少天(默认 90)
-keysize 指定密钥长度(默认 1024)
-storepass 指定密钥库的密码(获取keystore信息所需的密码)
-keypass 指定别名条目的密码(私钥的密码)
-dname 指定证书发行者信息 其中: “CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名 称,ST=州或省份名称,C=单位的两字母国家代码”
-list 显示密钥库中的证书信息 keytool -list-v -keystore 指定keystore -storepass 密码
-v 显示密钥库中的证书详细信息
-export 将别名指定的证书导出到文件 keytool -export -alias 需要导出的别名 -keystore 指定keystore -file 指定导出的证书位置及证书名称 -storepass 密码
-file 参数指定导出到文件的文件名
-delete 删除密钥库中某条目 keytool -delete -alias 指定需删除的别 -keystore 指定keystore – storepass 密码
-printcert 查看导出的证书信息 keytool -printcert -file g:\sso\michael.crt
-keypasswd 修改密钥库中指定条目口令 keytool -keypasswd -alias 需修改的别名 -keypass 旧密码 -new 新密码 -storepass keystore密码 -keystore sage
-storepasswd 修改keystore口令 keytool -storepasswd -keystore g:\sso\michael.keystore(需修改口令的keystore) -storepass pwdold(原始密码) -new pwdnew(新密码)
-import 将已签名数字证书导入密钥库 keytool -import -alias 指定导入条目的别名 -keystore 指定keystore -file 需导入的证书
Keytool存放目录
Mac : /Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/bin
注 : 以下均是Mac环境
自签名证书部署服务
1> Tomcat下使用自签名证书部署服务
使用指令生成证书:
服务器生成证书
> cd /Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/bin
> keytool -genkey -alias server -keyalg RSA -keystore /Users/chenshun131/Desktop/server.keystore -validity 3650 -dname "CN=chenshun131.com, OU=chenshun, O=develop, L=gz, ST=gd, C=zh" -keypass 123456 -storepass 123456
为客户端生成 p12证书
> keytool -genkey -v -alias client -keyalg RSA -storetype PKCS12 -keystore /Users/chenshun131/Desktop/client.p12 -dname "CN=chenshun131.com, OU=chenshun, O=develop, L=gz, ST=gd, C=zh"
把客户端证书添加到服务器的信任认证。由于不能直接将PKCS12格式的证书导入,必须先把客户端证书导出为一个单独的CER文件
> keytool -export -alias client -keystore /Users/chenshun131/Desktop/client.p12 -storetype PKCS12 -storepass 123456 -rfc -file /Users/chenshun131/Desktop/client.cer
将 .cer文件导入到服务器的证书库,添加为一个信任证书
注:如果你的网站规定每人一个证书,而不是一个公司一个证书,那么可以重复前几步,把每个人的证书添加到服务器中
> keytool -import -v -file /Users/chenshun131/Desktop/client.cer -keystore /Users/chenshun131/Desktop/server.keystore
CER 转 BKS,用于Android端验证
> keytool -importcert -trustcacerts -file /Users/chenshun131/Desktop/client.cer -keystore /Users/chenshun131/Desktop/client.bks -storetype BKS -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath /Users/chenshun131/Desktop/bcprov-jdk15on-146.jar -storepass 123456
通过list命令查看服务器的证书库,可以看到两个证书,一个服务器证书,一个受信任的客户端证书
> keytool -list -keystore /Users/chenshun131/Desktop/server.keystore
把服务器证书导出为一个单独的 .cer文件,来签发证书
> keytool -keystore /Users/chenshun131/Desktop/server.keystore -export -alias server -file /Users/chenshun131/Desktop/server.cer
双击 .cer文件,按照提示安装证书,将证书设置始终信任
配置tomcat服务器,server.xml
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
maxThreads="150"
scheme="https"
secure="true"
clientAuth=“false"
sslProtocol="TLS"
keystoreFile="/Users/chenshun131/Desktop/server.keystore"
keystorePass="123456"
truststoreFile="/Users/chenshun131/Desktop/server.keystore"
truststorePass="123456” />
注 : clientAuth 要是本地测试最好设置成 false
客户端
1> 浏览器
修改客户端的hosts文件
在输入完密码后提示输入域名是输入的是chenshun131.com,其实这个域名是不存在的,但是为了演示所以虚拟了这个域名,技巧在于修改
Windows : C:\Windows\System32\drivers\etc\hosts
Mac : /private/etc/hosts
添加内容如下:
127.0.0.1 chenshun131.com
这样在访问 sso.wsria.com的时候其实是访问的127.0.0.1也就是本机
注 : 提示输入域名的时候不能输入IP地址
向浏览器导入 .p12 文件
对于 Chrome 进入设置,点击 HTTPS/SSL 的证书管理
双击 .p12文件,按照提示安装证书,将证书设置始终信任
此时启动服务器,访问
https://chenshun131.com:8443/LearnSummarize/login
这个Tomcat工程,就是 Https
2> 移动端
使用 okhttp 连接,在程序初始化时加载 .bks 文件
常见错误
1> keytool 错误: java.io.IOException: Keystore was tampered with, or password was incorrect
此时需要注意在目标目录中不要存在 .keystore,另外注意输入默认保护密码 changeit
2> keytool 错误: java.io.FileNotFoundException: /Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib/security/cacerts (Permission denied)
这是由于权限不够需要使用 sudo,使用此命令需要在第一次输入系统密码
3> java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
App 与服务端交互的时候可能遇到自签名证书
4> 启动会报错:Java.io.IOException: Wrong version of key store.
Java平台默认识别jks格式的证书文件,但是android平台只识别bks格式的证书文件
获取网站证书的方法
1> 访问
https://kyfw.12306.cn/otn/
2> 单击地址栏红色三角,再点击详细信息
3> 点击 View certificate
4> 直接将证书拖到桌面上,就下载下来
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/小桥流水78/article/detail/885367
推荐阅读
article
无法连接仓库:
Error
performing
git
com
mand
:
git
ls-
remote
...
jenkins学习16-无法连接仓库:
Error
performing
git
com
mand
:
git
ls-remo...
赞
踩
article
idea
创建或导入
gradle
项目
会
下载
gradle
即
download
:
https
:
//servic...
然后注释掉下面的distributionUrl = "
https
:
//
services
.
gradle
.org/distr...
赞
踩
article
遇到的问题--
docker
---
gitlab
---k8s---
error
pulling
image
...
情况目前使用helm在k8s中安装了
gitlab
,
gitlab
runner在跑ci/cd时获取镜像失败。报错如下:er...
赞
踩
article
docker
拉取镜像报错:
docker
:
error
pulling
image
configura...
1. 使用
docker
拉取对应的镜像的时候报错:
docker
:
error
pulling
image
configur...
赞
踩
article
error
pulling
image
configuration
: Get
https
://reg...
error
pulling
image
configuration
: Get
https
://registry-1.do...
赞
踩
article
极速安装和体验
k8s
(
Minikube
)_
kubectl
run my-
tomc
a
t
--
im
a
ge
...
本文帮助您快速搭建
k8s
环境进行学习和开发(
Minikube
)_
kubectl
run my-
tomc
a
t
--
im
a
g...
赞
踩
article
解决
git
的这个错误:
fatal
: Unable to
find
remote
helper
for...
解决
git
的这个错误:
fatal
: Unable to
find
remote
helper
for '
https
'原因...
赞
踩
article
fatal:
unable
to
access
‘
https
://
git
hub
.com/apc.gi...
在拉取代码的时候会遇到fatal:
unable
to
access
'
https
://
git
hub
.com/dream...
赞
踩
article
springboot
查看
和修改内置
tomcat
版本
_
springboot
查看
tomcat
版本
...
关于Spring Boot提供了哪些jar包的依赖,可以
查看
当前用的
springboot
版本
对应的pom文件:/User...
赞
踩
article
[基线加固]常见中间件(
Tomcat
&
Nginx
&
Apache
)_
traceenable
off n...
Tomcat
安全基线加固1.应按照不同的用户分配不同的账号,避免不同用户间共享账号。且应删除或锁定与设备运行、维护等工作...
赞
踩
article
Tomcat
Error
Page配置...
如果JSP页面出现异常,就会转到tomcat自动的那个异常页面,页面不怎么友好。jsp标准中提供了error page的...
赞
踩
article
Tomcat
安全基线检查
_
tomcat
的
巡检报告...
控制台弱密码检查 | 身份鉴别描述
tomcat
-manger是
Tomcat
提供
的
web应用热部署功能,该功能具有较高权限...
赞
踩
article
按照CIS-
Tomcat7
最新
基线
标准
进行中间件层面
基线
检测
_cis安全
标准
tomcat
...
按照CIS-
Tomcat7
最新
基线
标准
进行中间件层面
基线
检测
检查项:开启用户登录失败锁定 路径:/var/sites/...
赞
踩
article
tomcat
配置
https
证书
_网站
tomcat
证书
...
tomcat
配置
https
_网站
tomcat
证书
网站
tomcat
证书
...
赞
踩
article
Tomcat
配置
HTTPS
...
1. 生成keystore %JAVA_HOME%\bin\keytool -genkey -alias tomcat ...
赞
踩
article
tomcat
https
配置_
tomcat
.
keystore
...
一、生成服务器端证书(以
tomcat
为例) 如果
tomcat
bin目录下的setclasspath.bat中没有指...
赞
踩
article
tomcat
开启
https
配置
keystore
_
tomcat
.
keystore
...
使用java自带的keytool,位置在%JAVA
_
HOME%in下。ps:
keystore
可以用来生成客户端使用的cr...
赞
踩
article
Tomcat
SSL
配置及
Tomcat
CA
证书
安装_接下来
需要
用到
我们
第五步下载
的
证书
文件
了,找到...
最近要做一个
SSL
的
应用,用
SSL
进行双向身份验证意思就是在客户机连接服务器时,链接双方都要对彼此
的
数字
证书
进行验证,保...
赞
踩
article
Tomcat
—
HTTPS
之
生成
密钥库
文件
与配置
Tomcat
服务器
_
keystorefile
tomc...
随着电脑的普及,上网已经成为常态,我们打开浏览器输入网址就能查看到自己关注的信息,传统使用的是HTTP协议,但是这种协议...
赞
踩
article
tomcat
证书...
第一步:为服务器生成证书 1、进入%JAVA_HOME%/bin目录 2、使用keytool为Tomcat生成证书,假定...
赞
踩
相关标签
java
list
开发语言
intellij-idea
gradle
android
gitlab
docker
error
pulling
image
dubbo
kubernetes
k8s
minikube
git
path
github
spring boot
tomcat
后端
Tomcat
JSP
Servlet