https解决方案-利用keytool生成证书

这篇具有很好参考价值的文章主要介绍了https解决方案-利用keytool生成证书。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

https解决方案

1:什么是HTTPS?

HTTPS其实是有两部分组成:HTTP + SSL / TLS,

也就是在HTTP上又加了一层处理加密信息的模块,并且会进行身份的验证。

2:什么是自签名证书?

就是自己生成的证书,并不是官方生成的证书。

除非是很正式的项目,否则使用自己签发的证书即可,因为官方生成证书是要花钱滴。

3:使用JDK自带工具KeyTool 生成自签发证书!

第一步:为服务器生成证书

打开CMD命令行工具,cd到jdk的bin目录下,如下图所示

https解决方案-利用keytool生成证书

使用keytool命令生成证书:

keytool 
-genkey 
-alias tomcat(别名) 
-keypass 123456(别名密码) 
-keyalg RSA(算法) 
-keysize 1024(密钥长度) 
-validity 365(有效期,天单位) 
-keystore D:/keys/tomcat.keystore(指定生成证书的位置和证书名称) 
-storepass 123456(获取keystore信息的密码)

命令:

keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore D:/keys/tomcat.keystore -storepass 123456

图例如下:

https解决方案-利用keytool生成证书

回车执行后如下图:

https解决方案-利用keytool生成证书

点击回车即可在D:/keys/文件夹内生成名为:tomcat.keystore的文件。

成功后无提示信息

注意:

①D:/keys/ 目录需要提前手动创建好,否则会生成失败

②提示输入域名的时候不能输入IP地址

第二步:为客户端生成证书

为浏览器生成证书,以便让服务器来验证它。

为了能将证书顺利导入至IE和Firefox,证书格式应该是PKCS12,

因此,使用如下命令生成:

keytool 
-genkey 
-alias client 
-keypass 123456
-keyalg RSA 
-storetype PKCS12 
-keypass 123456 
-storepass 123456 
-keystore D:/keys/client.p12

命令:

keytool -genkey -alias client -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -storetype PKCS12 -keystore D:/keys/client.p12 -storepass 123456

图例如下:
https解决方案-利用keytool生成证书

第三步:让服务器信任客户端证书

1、

由于不能直接将PKCS12格式的证书库导入,

必须先把客户端证书导出为一个单独的CER文件,使用如下命令:

keytool -export -alias client -keystore D:/keys/client.p12 -storetype PKCS12 -keypass 123456 -file D:/keys/client.cer

注意:

Keypass:指定CER文件的密码,但会被忽略,而要求重新输入

2、

将该文件导入到服务器的证书库,添加为一个信任证书:

keytool -import -v -file D:/keys/client.cer -keystore D:/keys/tomcat.keystore -storepass 123456

图例:

https解决方案-利用keytool生成证书

完成之后通过list命令查看服务器的证书库,

可以看到两个证书,一个是服务器证书,一个是受信任的客户端证书:

keytool -list -v -keystore D:/keys/tomcat.keystore

第四步:让客户端信任服务器证书

1、

由于是双向SSL认证,客户端也要验证服务器证书,

因此,必须把服务器证书添加到浏览器的“受信任的根证书颁发机构”。

由于不能直接将keystore格式的证书库导入,

必须先把服务器证书导出为一个单独的CER文件,使用如下命令:

keytool -keystore D:/keys/tomcat.keystore -export -alias tomcat -file D:/keys/server.cer

2、

双击server.cer文件,按照提示安装证书,

将证书填入到“受信任的根证书颁发机构”。

填入方法: 这里需要打开IE浏览器

打开浏览器 - 工具 – internet选项 – 内容 – 证书 – 把中级证书颁发机构里的www.localhost.com(该名称即时你前面生成证书时填写的名字与姓氏)证书导出来-再把导出来的证书导入 受信任的根颁发机构 就OK了。

第五步:配置Tomcat服务器

修改tomcat中server.xml

<Connector  port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true"
maxThreads="150"
scheme="https"
secure="true"
clientAuth="true"
sslProtocol="TLS"
keystoreFile="D:/keys/tomcat.keystore"
keystorePass="123456"
truststoreFile="D:/keys/tomcat.keystore"
truststorePass="123456" />

属性说明:

clientAuth:设置是否双向验证,默认为false,设置为true代表双向验证

keystoreFile:服务器证书文件路径

keystorePass:服务器证书密码

truststoreFile:用来验证客户端证书的根证书,此例中就是服务器证书

truststorePass:根证书密码

注意:

① 设置clientAuth属性为True时,需要手动导入客户端证书才能访问。

② 要访问https请求 需要访问8443端口,访问http请求则访问Tomcat默认端口(你自己设置的端口,默认8080)即可。

总结

经过以上五步,你使用HTTPS 端口为8443 进行访问的时候 就是经过SSL信息加密,不怕被截获了。

通话的双方,必须是都拥有证书的端,才能进行会话,换句话说,就是只有安装了咱证书的客户端,才能与服务器通信。

Springboot2.x配置https

添加配置文件

其中 server.port 对应的是https使用的端口

# 端口号
server.port=8443
# 项目上下文
server.servlet.context-path=/demo
# ssl证书的位置
server.ssl.key-store=D:/client1.p12
# 生成证书时填的密码
server.ssl.key-store-password=123456
# 证书类型
server.ssl.key-store-type=PKCS12
# 证书别名
server.ssl.key-alias=client1

添加注解,启动配置

@Bean
    public TomcatServletWebServerFactory servletContainer() { //springboot2 新变化
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint securityConstraint = new SecurityConstraint();
                securityConstraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                securityConstraint.addCollection(collection);
                context.addConstraint(securityConstraint);
            }
        };
        tomcat.addAdditionalTomcatConnectors(initiateHttpConnector());
        return tomcat;
    }

    private Connector initiateHttpConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(8081);
        connector.setSecure(false);
        connector.setRedirectPort(8443);
        return connector;
    }

浏览器访问

https://localhost:8443/demo/

同时如果访问:http://localhost:8081/demo 也会自动跳转到https文章来源地址https://www.toymoban.com/news/detail-430163.html

到了这里,关于https解决方案-利用keytool生成证书的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • https 的ssl证书过期处理解决方案(lighthttpd)

    更换证书:lighthttpd 配置文件位置:/opt/vmware/etc/lighttpd/lighttpd.conf     (配置文件的最底部   G快速来到底部) 方案一:阿里云申请免费的证书 这里公司内网环境没有配置域名,可以创建一个临时域名(vim /etc/hosts )域名:www.zyg.com  这里先声明:思路是错误的 其下有错误

    2024年02月11日
    浏览(32)
  • windows 使用Keytool为JDK添加https证书信任(cer证书)

    在实际工作中我们可能要在服务端调用https的接口,但是在用httpclient调用接口时会报一些安全的错误,要想调通接口这个问题,需要在jdk中导入安全证书 根据具体实际情况获取证书,是在浏览器获取证书(百度一下很多)还是第三方对接给的证书 例如:拿到了test.cer证书文件

    2024年01月19日
    浏览(26)
  • 在浏览器中使用javascript打印HTML中指定Div带背景图片内容生成PDF电子证书查询的解决方案

    要调用浏览器中的打印功能,并指定需要打印的内容为特定的DIV内的内容,你可以使用JavaScript来实现。下面是一种实现方法: 首先,在需要打印的DIV标签上添加一个唯一的ID属性,例如: 接下来,在JavaScript中使用 window.print() 方法来调用浏览器的打印功能,并指定打印的内容

    2024年02月13日
    浏览(50)
  • JDK自带工具keytool生成ssl证书(转)

    前言: 因为公司项目客户要求使用HTTPS的方式来保证数据的安全,所以木有办法研究了下怎么生成ssl证书来使用https以保证数据安全。 百度了不少资料,看到JAVA的JDK自带生成SSL证书的工具:keytool,外加看了同事的心得体会,自己总结了一下具体的使用方法和使用过程中发现

    2024年02月07日
    浏览(34)
  • Android 生成 keystore 证书并查看 MD5 等签名信息(Android Studio、Keytool)

    记得安装 Java JDK,有 java 环境才能走下面的操作。 生成 .keystore 证书,Keytool 指令详细介绍。 -genkeypair :原 -genkey ,Java 1.6 之后更改,表示生成密钥对 -alias :产生别名,每个 keystore 都会关联这一个独一无二的 alias,alias 不区分大小写 -keyalg :指定产生密钥的算法 -keypass :指

    2024年01月22日
    浏览(45)
  • 了解单域名证书和通配符证书的区别,选择合适的SSL证书解决方案

    随着互联网的不断发展,网站安全性问题一直备受关注,在保护网站数据安全的过程中,SSL证书一直发挥着至关重要的作用。而在选择SSL证书时,单域名证书和通配符证书是两种常见的选择。本文将详细介绍 单域名证书和通配符证书的区别 ,以便于选择适合您网站的SSL证书

    2024年02月06日
    浏览(40)
  • 解决方案:解决https页面加载http资源报错

    HTTPS页面加载HTTP资源会报错的原因是出于安全性考虑。 HTTPS(HyperText Transfer Protocol Secure)是一种通过使用SSL/TLS加密通信来保护数据传输的协议,它确保了客户端和服务器之间的安全连接。 当HTTPS页面尝试加载非加密的HTTP资源时,存在以下问题: 混合内容警告:浏览器会发出

    2024年02月07日
    浏览(36)
  • KubeSphere 镜像构建器(S2I)服务证书过期解决方案

    目前 KubeSphere 所有 3.x.x 版本,如果开启了 DevOps 模块并使用了镜像构建器功能(S2I)都会遇到证书过期问题。 已开启 DevOps 模块 下载这个更新 S2I 服务证书压缩包,上传到任一可以访问 K8s 集群的节点; 把上传的压缩包解压 进入解压后的目录 执行更新证书的脚本 ./update-s2i

    2024年02月22日
    浏览(32)
  • 局域网安全的https协议解决方案

    我们在有域名、有公网ip的情况下通常直接在域名管理中可以申请ssl证书,利用nginx可以做到安全的https协议,有时候我们需要将局域网内的服务地址也要做成https协议,如果直接利用nginx转发443端口,访问时会告警,提示不安全的地址,需要手动点一下才能进入网站,非常不方

    2024年02月14日
    浏览(27)
  • HTTPS被重定向到HTTP的解决方案

    项目使用的Spring框架,在Nginx中已配置HTTPS,通过HTTPS地址成功登录后,重定向到了HTTP地址。 ① Nginx配置中加入X-Forwarded-Proto; ② Tomcat配置中加入protocolHeader。 参考来自:

    2024年02月08日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包