文档章节

spring boot / cloud (五) 自签SSL证书以及HTTPS

wangkang80
 wangkang80
发布于 2017/05/31 09:13
字数 1206
阅读 1875
收藏 62
点赞 1
评论 1

spring boot / cloud (五) 自签SSL证书以及HTTPS

##前言

###什么是HTTPS?

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

###什么是SSL证书?

SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为SSL服务器证书。 SSL 证书就是遵守 SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。 SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socket layer(SSL)安全协议是由Netscape Communication公司设计开发。该安全协议主要用来提供对用户和服务器的认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性,现已成为该领域中全球化的标准。由于SSL技术已建立到所有主要的浏览器和WEB服务器程序中,因此,仅需安装服务器证书就可以激活该功能了),即通过它可以激活SSL协议,实现数据信息在客户端和服务器之间的加密传输,可以防止数据信息的泄露。保证了双方传递信息的安全性,而且用户可以通过服务器证书验证他所访问的网站是否是真实可靠。数位签名又名数字标识、签章 (即 Digital Certificate,Digital ID ),提供了一种在网上进行身份验证的方法,是用来标志和证明网路通信双方身份的数字信息文件,概念类似日常生活中的司机驾照或身份证相似。 数字签名主要用于发送安全电子邮件、访问安全站点、网上招标与投标、网上签约、网上订购、安全网上公文传送、网上办公、网上缴费、网上缴税以及网上购物等安全的网上电子交易活动

##思路

  • 使用自签ssl证书的方式本地搭建https服务

##实现

###1.使用keytool生成keystore文件,并且拷贝至项目的根目录下

注意 : 生成证书时,名称应使用域名,(本机的话,设置hosts文件)

keytool -genkey -alias udf_demo -keyalg RSA -keystore d:\udf_demo.keystore

###2.将应用的端口号更改为8443(测试用,https默认端口号为443)

server.port=8443

###3.进行ssl配置

server.ssl.enabled=true
server.ssl.key-store=udf_demo.keystore
server.ssl.key-store-password=123456
server.ssl.key-store-type=JKS
server.ssl.key-alias=udf_demo

###4.启动应用,使用https://xxxx:8443访问应用

注意:正常情况下,浏览器会提示不安全,这个是因为我们使用的是自签的证书,浏览器并不信任,这时候需要将证书导入,浏览器,重启后,浏览器就会显示当前链接是安全的了,导出证书

keytool -selfcert -alias udf_demo -keystore d:\udf_demo.keystore

keytool -export -alias udf_demo -keystore d:\udf_demo.keystore -storepass 123456 -rfc -file d:\udf_demo.cer

然后将导出的cer文件,导入到浏览器信任证书里,并且重启浏览器

###5.使用restTemplate访问https服务

String url = "https://wangkang.com:8443/demo/b";
ResponseEntity<RestResponse<Date>> result = restTemplate.exchange(url, HttpMethod.GET, null,
        new ParameterizedTypeReference<RestResponse<Date>>() {
        });

不过正常情况下,以上代代码会报出如下错误

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: 
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: 
unable to find valid certification path to requested target

因为在这个示例里,当前应用又做了服务方,也做了调用方,其实跟前面浏览器访问应用是一样的,调用方也会因为不信任当前所调用的这个服务,而拒绝调用,所以说,很简单,信任这个服务即可,如下代码,将前面 获得的cer证书导入jre

keytool -importcert -alias udf_demo -file 
d:/udf_demo.cer -keystore D:/develop/Java/jdk1.8.0_92/jre/lib/security/cacerts

然后重启应用,再进行调用,即可正常调用

##结束

使用了keytool和spring boot的ssl配置,完成了基本的https的样例.


想获得最快更新,请关注公众号

想获得最快更新,请关注公众号

© 著作权归作者所有

共有 人打赏支持
wangkang80
粉丝 345
博文 22
码字总数 34117
作品 3
浦东
高级程序员
加载中

评论(1)

_简简单单_
_简简单单_
讲的挺清晰,赞
【大量干货】史上最完整的Tengine HTTPS原理解析、实践与调试

本文邀请阿里云CDN HTTPS技术专家金九,分享Tengine的一些HTTPS实践经验。内容主要有四个方面:HTTPS趋势、HTTPS基础、HTTPS实践、HTTPS调试。 一、HTTPS趋势 这一章节主要介绍近几年和未来H...

樰篱
05/29
0
0
Linux系统OpenSSL版本升级

我们系统安装的OpenSSL存在漏洞,需要升级。 查看OpenSSL的版本: # /usr/bin/openssl version OpenSSL 1.0.1e-fips 11 Feb 2013 很多系统存在心脏出血(heart breeding)的漏洞,所以要升级...

LionelShen
2017/10/18
0
0
看完秒懂对称加密、非对称加密、数字签名

对称加密算法 对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大...

yushiwh
07/11
0
0
使用 PGP 保护代码完整性(三):生成 PGP 子密钥

在第三篇文章中,我们将解释如何生成用于日常工作的 PGP 子密钥。 在本系列教程中,我们提供了使用 PGP 的实用指南。在此之前,我们介绍了基本工具和概念,并介绍了如何生成并保护您的主 PG...

作者: Konstantin Ryabitsev
05/04
0
0
CentOS 7.4 Tengine安装配置详解(五)

十四、配置Tengine支持HTTPS 1、演示环境: 备注:Tengine和CA可以部署于同一台服务器 2、修改配置文件nginx.conf,创建基于主机名的虚拟主机: server { listen 80; server_name web.vhosts...

Marion0728
06/26
0
0
Spring Security 3和CAS 3.5.2集成的完整实例

回顾 在上一篇文章,利用Spring Security 3.2的remember-me搭建SSO,我做了一个简单的单点登录。但其毕竟不够健壮,比如无法点单登出,也无法与非Spring Security的应用集成。今天,我将使用...

xpbug
2014/03/04
0
21
使用SSH密钥对给你的阿里云ECS加把安全锁

先说一下:什么是 SSH 密钥对 SSH 密钥对,常简称为密钥对,是阿里云为您提供的新的远程登录 ECS 实例的认证方式,是一种区别于传统的用户名加密码模式的认证方式。 SSH 密钥对通过加密算法生...

51干警网
05/24
0
0
apache 搭建双向证书认证

一. CA自签 1.建立 CA 目录结构 mkdir -p ./demoCA/{private,newcerts} touch ./demoCA/index.txt echo 01 > ./demoCA/serial # 生成 CA 的 RSA 密钥对 openssl genrsa -des3 -out ./demoCA......

niceguy_php
2014/04/02
0
0
数字证书,数字签名,https,ssl等安全概念的解释

讲这些概念之前,先讲讲非对称加密,与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进...

chaney
2014/05/28
0
0
在 Gentoo 中使用 Yubikey PGP 卡

本文环境 OS:Gentoo 内核:4.9.76 gpg (GnuPG): 2.2.4 yubikey-manager: 0.6.0 pcsc-tools: 1.4.27 什么是 PGP 卡? 在加密技术中,PGP 卡是一种智能卡,这种智能卡可以执行加密、解密、...

00%
05/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Boot 整合 MyBatis/通用Mapper/PageHelper分页插件

整合MyBatis 整合通用Mapper 1. POM依赖配置 <properties><mapper.starter.version>2.0.3-beta1</mapper.starter.version></properties><!-- 通用Mapper --><dependency><groupId>t......

OSC_fly
12分钟前
0
0
CentOS7 双网卡绑定

环境 操作系统 CentOS7.5,禁用 NetworkManager 服务 网卡 eth0 网卡 eth1 绑定网卡 bond0 网卡 eth0 配置 修改 /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=EthernetBOOTPROTO=noneD......

Colben
14分钟前
0
0
zk实战--rpc框架集群化

在看此篇内容时需要浏览下面内容 netty实战--手写rpc框架 前文功能简介以及功能扩充 利用netty来实现一个点对点的rpc调用。客户端和服务端都是靠手写地址进行socket同学的,无法1对多,也无法...

xpbob
30分钟前
10
0
springboot 发送邮件

获取授权码 添加配置 # 账号和密码spring.mail.username=aaa@qq.comspring.mail.password=bbb# 服务器地址spring.mail.host=smtp.qq.comspring.mail.properties.mail.smtp.ssl.en...

阿豪boy
31分钟前
0
0
如何使用GNU Ring?

文章名:如何使用GNU Ring? 作者:冰焰火灵X 1079092922@qq.com 文章许可:CC BY-SA 4.0 ##1. 安装 下载GNU Ring 点击左边选择你的系统版本(这里以 GNU/Linux 为例,我使用的是Mint 18.3)...

ICE冰焰火灵X
34分钟前
4
0
深入理解springMVC

什么是spring MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而...

Java填坑之路
39分钟前
1
0
《射雕英雄传》书摘

1. 我虽是个飘泊江湖的贫家女子,可不是低三下四、不知自爱之人。你如真心爱我,须当敬我重我。我此生决无别念,就是钢刀架颈,也决意跟定了你。将来……将来如有洞房花烛之日,自然……自能...

k91191
50分钟前
0
0
解决:modal中datePicker 选中时,会触发modal的hidden.bs.modal事件

最近项目中发现了一个bug,具体表现为选中模态框上datepicker组件上的日期时,会触发模态框的关闭事件,导致数据编辑无法正常进行。网上搜索了下,解决方法如下: $('.datepicker').on('hid...

Funcy1122
53分钟前
0
0
Redis分布式锁的正确实现方式

前言 分布式锁一般有三种实现方式: 1.数据库乐观锁 2.基于Redis的分布式锁; 3.基于Zookeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis...

大海201506
今天
2
0
ClassNotFoundException: javax.el.ELManager

这个是因为tomcat7中的el-api2.2,有些版本太低,建议升级tomcat到8.0,利用el-api3.0就会解决这个问题。

无语年华
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部