文档章节

web服务器配置https

枯藤KT
 枯藤KT
发布于 2016/10/26 21:15
字数 1716
阅读 32
收藏 1
点赞 0
评论 0

原文出自这里,这里是测试可用的一个文档,主要是要理解整个流程,以及为什么要自己充当CA.将来再修改,弄一个完整详细点的文档.     

前言
   openSSL是一款功能强大的加密工具、我们当中许多人已经在使用openSSL、用于创建RSA私钥或证书签名请求、不过、你可知道可以使用openSSL来测试计算机速度?或者还可以用它来对文件或消息进行加密。

正文

   openssl是一个开源程序的套件、这个套件有三个部分组成、一是libcryto、这是一个具有通用功能的加密库、里面实现了众多的加密库、二是libssl、这个是实现ssl机制的、他是用于实现TLS/SSL的功能、三是openssl、是个多功能命令行工具、他可以实现加密解密、甚至还可以当CA来用、可以让你创建证书、吊销证书、这里我们用openssl enc对一个文件进行加密看看:
   # openssl enc -des3 -a -salt -in /etc/fstab -out /tmp/fstab.cipher    加密
   # cat /tmp/fstab.cipher
   # openssl enc -d -des3 -a -salt -in /tmp/fstab.cipher -out /path/to/fstab.cipher   解密
wKioL1Mo8LjRHGiLAASNpydrhdg004.jpg


数字证书:
   证书格式通常是x509的数字证书的格式、还有pkcs等其他的。
    对于x509这种证书内容当中都包含哪些呢:
    1、公钥和也就是有效期限。
    2、持有者的个人合法身份信息、这个信息有可能是一个公司、也可能是个人、也可以是主机名。
    3、证书的使用方式、比如用来进行主机之间的认证等。
    4、CA(证书颁发机构)的信息
    5、CA的数字签名、CA的证是自签证书    

公钥加密、也叫非对称加密
   公钥加密最大的特性就是密钥成对的、公钥称为public key(pkey)、私钥称为secret key(skey)、一般而言、公钥用来加密、私钥用来解密、如果要实现电子签名那就是私钥来用加密、公钥用来解密、而公钥是可以给任何人的、私钥就得自己保存;公钥加密一般不会加来对数据加密、因为他的加密速度很慢、比对称加密慢3个数量级(一个数量级是10倍、3个就是1000倍)、所以公钥加密通常用于密钥交换(IKE)和身份认证的。
   他的常用算法有:RSA和EIGamal、目前RSA是比较广泛的加密算法、而DSA(Digital Signature Algorithm)只能加来做签名、而无法加于加密的算法
   他的工具通常用:gpg、openssl rsautl
   wKioL1Mo_M3zqIQTAAMed6kdJFk241.jpg


单向加密、也叫hash算法:(One-Way加密)
   用不生成数据指纹的、也叫数据摘要算法、输出是定长的、MD5是128位定长输出、SHA1定长输出160位、他的特性是不会出现碰撞的、每位数据只要有一位不一样就会产生巨大的变化、我们称这种为雪崩效应、常用的算法MD5、SHA1、SHA512、常用工具有sha2sum、md5sum、cksum、openssl dgst。
   # sha1sum fstab
   # openssl dgst -sha1 fstab
wKioL1Mo8qGRYU8qAACi9bv1dNk842.jpg


信息摘要码:
   MAC(Message Authentication Code):通常应用于实现在网络通信中保证所传输的数据完整性、他的基本方式就是基于MAC将要通信的数据使用单向加密的算法获取定长输出、而后将这定长输出安全可靠的送达到接收方的一种机制、简单来讲我们客气端发送数据给服务器时、客户端会计算这段数据的特征码、并而将这段特征码发送给服务器端、但是这种特征码不能简单的这样传送过去、他要基于MAC、调用单向加密计算这段特征码、而后将加密的结果发送给服务器端、保证特征码不会被人修改、这是单向加密的一种实现、一种延伸应用;
   他的常用算法有:CBC-MAC、HMAC    
   对于openssl来讲、如果你是客户端、他可以帮我们生成密钥对、帮我们生成证书申请、如果是发证方、他可以帮发证方自签证书、还可以签署证书、还可以生成吊销列表、当然大范围内全球内使用openCA。
    那接下来我们就用openssl完成证书生成、签署、颁发以及吊销等功能:

wKiom1Mo8ebR3A4yAAgALJs1nQ4330.jpg

 

实现步骤
   首先自己得有一个证书、那就先自签一个证书、用openssl实现私有CA、CA的工作目录都是在/etc/pki/CA下、而CA的配置文件在/etc/pki/tls/openssl.cnf这个文件中。

   生成CA私钥、这里要注意、公钥是按某种格式从私钥中提取出来的、公钥和私钥是成对的、生成私钥也就有了公钥:
   # (umask 077; openssl genrsa -out private/cakey.pem 2048)    wKiom1Mo8wvBeJ8aAAX_UqANBg4206.jpg


   在当前shell中用()执行命令表示括号中的命令要在子shell中执行,2048表示密钥的长度、-out后面表示生成密钥文件保存的路径,生也的文件权限是666、而这个文件不能被别人访问、所在666-077就得到权限600:


   查看公钥或提取公钥、这个并不是必要步骤:
   # openssl rsa -in private/cakey.pem -pubout -text

wKioL1Mo87KwcGDEAAFzDOb-lMY884.jpg


   生成自签证书、用openssl中req这个命令、叫证书请求:

   # openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650    wKiom1Mo9AHwimaXAASKJgtp0-k242.jpg

   在CA的目录下创建两个文件:
   # touch index.txt serial
wKioL1Mo9DaCGJ7sAAD4Zm6-oOE736.jpg


   OK、CA的证书有了、那接下来就是给客户签署证书了;我这里换另一台主机来做客户、向CA了起签署申请、如果要给服务器使用、那一定要跟你的服务器名保持一致、我们这里是以web服务器使用的、所以生成的私钥也要放在服务器的目录下、我这里以httpd为例:
   生成密钥对、我们专门分建一个目录来存放:
   # mkdir /etc/httpd/ssl
   # (umask 077; openssl genrsa -out httpd.key 1024)

wKiom1Mo9IOD_HMtAAEzY0ZsikU118.jpg


   客户端生成证书签署请求:
   # openssl req -new -key httpd.key -out httpd.csr
wKioL1Mo9ISyuHPbAAMZWjTR_3w493.jpg

   再把httpd.csr发给远程主机的CA签
   # scp httpd.csr 172.16.251.171:/tmp/
wKioL1Mo9KvTnwzkAAGD6uCXOk0448.jpg


   再切换到远程主机的/tmp看一下有没有一个叫httpd.csr的文件:
wKiom1Mo9PCSlFofAADwVuludfE414.jpg


   于是我们的CA检查信息完后就可以签署了:
   # openssl ca -in /tmp/httpd.csr -out /tmp/httpd.crt -days 3655
wKiom1Mo9RaAGH6JAAODPaQCazo758.jpg


   再把签署好的证书发送回去给客户端的主机:
   # scp httpd.crt 172.16.251.127:/etc/httpd/ssl/

wKioL1Mo9RSyx2W-AAGh15Klvy8149.jpg


   发送给客户端主机了我们就可以去查看一下了:
   # ls -l /etc/httpd/ssl
wKioL1Mo9TniSBy2AACX06DQojs497.jpg

   于是我们的客户端主机就可以配置使用CA签署的证书了。

   如果说证书过期了怎么吊销呢:(要在CA主机上吊销)
   # openssl ca -revoke httpd.crt

其它参考文档:

文章一

本文转载自:http://tanxw.blog.51cto.com/4309543/1379417

共有 人打赏支持
枯藤KT

枯藤KT

粉丝 4
博文 97
码字总数 60123
作品 0
昌平
程序员
Tomcat服务器搭建Https协议

什么是Http协议? HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议之上的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程以及数据本身的格式 ...

宇你同在
05/21
0
0
配置Outlook On The Web http 到https的重定向

在exchange 2016 配置 http 到 https 的 Outlook 在 web 上的重定向 [该主题是预发布的文档,在将来的版本中可能会有所更改。包含以占位符形式表示的空白主题。]如果您有反馈,我们将乐于倾听...

lianggj
06/26
0
0
中小企业虚拟化解决方案-VMware vSphere 6.5-日常管理入口v0.0.1

中小企业虚拟化解决方案-VMware vSphere 6.5 日常管理入口 v0.0.1 本文目的: 针对中小企业虚拟化的平台管理,涉及到很多管理入口,普通管理员未必知道从哪里管理? 本文将从最底层到最高层进...

CTO_LiuJinFeng
06/26
0
0
安装Webmin管理Linux系统

何为Webmin Webmin是目前功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器 访问Webmin的各种管理功能并完成相应的管理动作。目前Webmin支持绝大多数的Unix系统,这些系统除了各种版...

DragonFK
2013/02/20
0
0
怎样正确设置remote_addr和x_forwarded_for获取用户真实IP

做网站时经常会用到和这两个头信息来获取客户端的IP,然而当有反向代理或者CDN的情况下,这两个值就不够准确了,需要调整一些配置。 什么是remoteaddr remoteaddr代表客户端的IP,但它的值不...

星逝流
2015/11/11
0
0
XenDesktop7.12配置StoreFront使用HTTPS

在之前的博文中,我们的客户端是使用http协议去登录StoreFront,为了提高安全性,我们可以为StoreFront申请服务器证书配置https加密访问,以及巧用IIS错误页进行https重定向,本文将介绍具体...

jianlong1990
06/26
0
0
给Nginx配置一个自签名的SSL证书

要保证Web浏览器到服务器的安全连接,HTTPS几乎是唯一选择。HTTPS其实就是HTTP over SSL,也就是让HTTP连接建立在SSL安全连接之上。 SSL使用证书来创建安全连接。有两种验证模式: 仅客户端验...

YKOS
2015/01/14
0
0
内网增加F5为SFB前端池配置HLB之后,内部用户无法使用网页加入Skype for business会议

问题描述 :内网增加F5为SFB前端池配置HLB之后,内部用户无法使用网页加入Skype for business (以下简称SFB)会议 ……………………………………………………………………………………………...

杰克斯帕罗
2017/11/02
0
0
Windows server 2003 SSL 配置

SSL(Security Socket Layer,安全套接层)是一种在两台主机之间提供安全通道的协议,其目的是通过加密保护传输的数据并对通信双方进行身份验证,保证两台主机之间的通信安全.SSL最早由网景公司开...

技术小胖子
2017/11/15
0
0
安卓应用安全指南 5.4.3 通过 HTTPS 的通信 高级话题

5.4.3 通过 HTTPS 的通信 高级话题 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC-SA 4.0 5.4.3.1 如何创建私有证书并配置服务器 在本节中,...

apachecn_飞龙
04/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

zk实战--rpc框架集群化

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

xpbob
13分钟前
7
0
springboot 发送邮件

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

阿豪boy
13分钟前
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
16分钟前
1
0
深入理解springMVC

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

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

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

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

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

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

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

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

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

无语年华
今天
0
0
Jvm堆内存的划分结构和优化,垃圾回收详解(详细解答篇)

在JVM中堆空间划分如下图所示 上图中,刻画了Java程序运行时的堆空间,可以简述成如下2条 1.JVM中堆空间可以分成三个大区,新生代、老年代、永久代 2.新生代可以划分为三个区,Eden区,两个幸...

嘻哈开发者
今天
1
0
CentOS 7.4 设置系统字符编码

1.语言变量LANG在 /etc/locale 文件中。 2.可以通过/ect/profile 来修改LC_TYPE 变量的值 添加如下代码 export LC_ALL="zh_CN.GBK" export LANG="zh_CN.GBK" 到profile文件中,变量的可以修改...

qimh
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部