自建证书配置HTTPS服务器
说明
1、写这篇博客的初衷是因为最近iOS9出来了,苹果官方默认要求使用HTTPS,所以自己想整一个HTTPS服务器,也想好好了解一下HTTPS通信,也知道了HTTPS其实就是在HTTP的基础上加上了SSL/TLS。具体想了解SSL/TLS原理的请浏览SSL/TLS协议运行机制的概述和SSL/TLS原理详解。中途看了很多博客,也花了不少时间,所以想记录一些东西。
2、这篇博客的内容主要是讲升级openssl、如何自己创建证书、配置证书到服务器和自建CA。其中对证书不太了解的,可以看数字证书及CA的扫盲介绍这篇文章。本篇博客其中第2步和第3步已经重复,只需要选择其中一步操作就可以搭建HTTPS服务器,当然搭建都是不受信任的,如果是架设网站还是需要到权威的CA机构申请证书。本来还有生成iOS客户端的证书和使用证书连接服务器相关的内容,由于篇幅的原因就把它放在下一篇吧。
3、本人使用了Mac10.10.5和Ubuntu 14.04.1进行配置搭建,本篇博客主要以Unbuntu 14.04.1系统为主。而本人这个Ubuntu 14.04.1是阿里云一键安装的,而且没有更改里面的服务器设置,所以诸多的配置可能与一般Linux系统不太相同(与我电脑上的Linux mint就很大不同)。不过,我会在最后说明一下Mac和Linux配置一些不同的地方,其实都是一些相关路径的不同。当然,有可能你的Apache安装路径与我说的几种路径都不同,没关系,对照着修改也应该没什么问题。
1、安装升级openssl
首先,查看下当前设备的openssl版本,如果版本在openssl1.0.1g以上,请略过
1 2 |
|
如果是处于1.0.1-1.0.1f
的版本,那就赶快升级到1.0.1g
版本以上吧!因为这些版本存在漏洞,详情请见关于OpenSSL“心脏出血”漏洞的分析
从上面信息可以看出我们的系统版本是1.0.1f,openssl需要升级,那我们先来下载源代码
1 |
|
下载完之后,解压并进行安装
1 2 3 4 |
|
安装的过程中,碰到了一个问题 make: *** [install_docs] Error 255 解决这个问题请使用make install_sw
安装,详情见https://github.com/openssl/openssl/issues/57
随后,进行相关的设置
1 2 3 4 5 6 7 8 9 10 11 |
|
最后查看一下版本
1 2 |
|
1.0.1g版本安装成功
2、创建用私钥签名的证书,配置到Apache服务器
首先,生成私钥,创建请求证书,使用私钥对证书进行签名
生成私钥
openssl genrsa -des3 -out private.key 2048
-des3代表加上了加密,后面的2048是代表生成的密钥的位数,1024已经不是很安全,详情请见互联网全站HTTPS的时代已经到来
生成证书请求
openssl req -new -key private.key -out server.csr
这一步需要填写一些信息,其中Common Name (e.g. server FQDN or YOUR name) []
这个需要填写你的域名或服务器地址。
生成服务器的私钥,去除密钥口令
openssl rsa -in private.key -out server.key
使用私钥为证书请求签名,生成给服务器签署的证书,格式是x509的PEM格式
openssl x509 -req -in server.csr -out server.crt -outform pem -signkey server.key -days 3650
-outform pem指定证书生成的格式,默认是pem,所以这个命令也可以写作成sudo openssl x509 -req -in server.csr -out server.crt -signkey server.key -days 3650
。
将证书copy到Apache配置路径下
1 2 3 |
|
其次,配置Apache服务器
编辑/alidata/server/httpd/conf/httpd.conf文件
1 2 3 |
|
将这三行前面的#去掉
编辑/alidata/server/httpd/conf/extra/httpd-ssl.conf
文件,找到SSLCertificateFile、SSLCertificateKeyFile,修改它们两对应的文件
1 2 |
|
编辑/alidata/server/httpd/conf/vhosts/phpwind.conf
文件,这里我没有更改阿里云的配置,如果你不是阿里云服务器,找到对应的httpd/conf/extra/httpd-vhosts.conf
文件进行修改。这个文件我主要加了下面的内容:
1 2 3 4 5 6 |
|
最后,咱们重启Apache服务器,输入链接查看是否配置成功。
3、自建CA,用CA证书进行签名,配置到Apache服务器
第一步、使用CA.sh创建CA根证书
修改openssl的配置文件sudo vim /usr/local/ssl/openssl.cnf
,修改default_bits=1024
为default_bits=2048
,使其openssl加密使用2048位,原因前面已经说过。
随后创建一个目录,并且将生成CA证书的脚本CA.sh复制到这个目录
1 2 3 |
|
CA.sh这个脚本如果找不到,可以使用 openssl version -a
查看openssl对应的目录,而CA.sh一般就在这个目录的子目录misc目录下。
之后执行./CA.sh -newca
命令
CA.sh会使用/usr/local/ssl/openssl.cnf
中的配置来创建私钥和证书,这正是我们第一步为啥需要修改这个文件的原因。
创建CA证书过程中,不输入信息,直接回车,填写加密私钥的密码和生成CA证书的相关信息。
创建完之后会生成demoCA目录。这个目录有
1 2 |
|
其中cacert.pem是CA的证书,private存放CA的私钥,newcerts存放CA签名的备份。到这里,我们的CA已经建好了,下面我们可以通过CA来对我们的证书进行签名了。
第二步、使用CA根证书为服务器证书签名
1 2 3 4 5 6 7 8 9 10 11 12 |
|
更多openssl ca 命令请见OpenSSL命令–ca
第三步、配置服务器:
1 2 3 4 5 |
|
编辑/alidata/server/httpd/conf/extra/httpd-ssl.conf
文件,找到SSLCertificateFile、SSLCertificateKeyFile、SSLCACertificatePath、SSLCACertificateFile进行修改
1 2 3 4 5 6 7 8 |
|
修改vhost配置vim /alidata/server/httpd/conf/vhosts/phpwind.conf
1 2 3 4 5 6 7 8 |
|
最后,咱们重启Apache服务器,在浏览器输入链接查看是否配置成功。可以在浏览器上查看证书信息,与第二步不同之处在于此时的证书有两个。
最后,与Mac和寻常Linux系统一些区别
一、与MAC的几点不同
1、首先安装openssl,参考我的Mac10.11升级安装openssl
2、Mac上对应的Openssl的路径是/System/Library/OpenSSL/
3、Mac上对应的Apache的路径是/etc/apache2/
4、Mac上重启服务器使用/usr/sbin/apachectl restart
,阿里云服务器使用/etc/init.d/httpd restart
或者service httpd restart
5、Mac上vhost配置的路径是/etc/apache2/extra/httpd-vhosts.conf
二、与寻常Linux系统的不同
主要借鉴MacOS openssl下生成建立CA并生成服务器和客户端证书方法这篇文章
1、linux上Apache的路径是/usr/local/apache
2、linux上vhost配置的路径是/usr/local/apache/conf/extra/httpd_vhosts.conf
总结
1、对HTTPS的理解
它的基本原理是服务器拥有一个私钥,客户端拥有公钥,当然它们是使用证书管理的。每次通信它们通过证书进行身份认证。身份认证之后客户端发送一个“对话密钥”给服务器。传输“对话密钥”时,客户端公钥通过不对称加密算法进行加密了的,只有服务器才能解密。然后双方使用这个"对话密钥"对内容进行对称加密,双方之间传输内容。
2、对openssl、SSL/TLS的相关理解
openssl是一套工具,它是一个开源库,可以对相关内容进行加密和解密,也可以生成证书并且进行数字签名。它创建的x509证书有PEM和DER两种编码,而且它们还可以导出p12文件。它使用的加密算法有对称加密,也有不对称加密。
3、HTTPS相关理论知识博客,值得细读
OpenSSL 与 SSL 数字证书概念贴
SSL/TLS协议运行机制的概述
SSL/TLS原理详解
参考:
https介绍与环境搭建
OpenSSL常用命令
OpenSSL命令—CA.pl
MacOS openssl下生成建立CA并生成服务器和客户端证书方法
mac中apache开启https功能,本地发布安装app
TLS/HTTPS 证书生成与验证
OpenSSL小结
利用openssl进行RSA加密解密
DER 和 PEM 格式
自建证书配置HTTPS服务器相关推荐
- 信息安全实践Lab1-自建CA证书搭建https服务器
title: 信息安全实践Lab1-自建CA证书搭建https服务器 date: 2021-12-21 02:44:40 tags: 信息安全 categories: 信息安全实践 信息安全实践Lab ...
- 最新阿里云服务器免费SSL证书配置HTTPS的两种方法(图文教程二)
在大家学习如何利用免费SSL证书配置网站HTTPS之前,我们先要搞清楚为什么要开启HTTPS,这个绿色的小锁真的有用吗?所谓的HTTPS其实是(安全套接字层超文本传输协议)是以安全为目标的HTTP通道 ...
- nginx配置https服务器
最近学习研究nginx,通过修改其配置文件以及在编译时添加相关模块可以配置https服务器. 1.环境 Ubuntu 14.04 64bits nginx version: nginx/1.0.15 ...
- 云速建站配置https证书
2019独角兽企业重金招聘Python工程师标准>>> 1.购买证书,阿里云.华为云均有,自行购买下载即可. 2.购买服务器,用于配置证书,同时在服务器上安装web服务器,配置htt ...
- 自建CA证书搭建https服务器
由于CA收费,所以可以自建CA,通过将CA导入浏览器实现https的效果,曾经12306购票就需要自行导入网站证书. 关于https 2015年阿里巴巴将旗下淘宝.天猫(包括移动客户端)全站启用HTT ...
- 信安实践——自建CA证书搭建https服务器
https://www.cnblogs.com/libaoquan/p/7965873.html 1.理论知识 https简介 HTTPS(全称:Hyper Text Transfer Protoco ...
- 腾讯云CentOS自建CA证书搭建https服务器
为了完成实验以及不同电脑虚拟机不同,索性买了一个腾讯云的服务器,学生价,很便宜. 实验环境:CentOS7.5,Apache 2.4.6 OpenSSL 1.0.2k 理论知识 Http和Https的 ...
- 使用自签名SSL证书配置HTTPS,解决浏览器提示不安全警告
项目测试过程中需要将应用从HTTP升级到HTTPS,浏览了网上一些帖子,参考<WebLogic11g-单双向SSL配置(以Springside3为例)>一文使用openssl工具来自建CA ...
- nginx 学习笔记(9) 配置HTTPS服务器--转载
HTTPS服务器优化 SSL证书链 合并HTTP/HTTPS主机 基于名字的HTTPS主机 带有多个主机名的SSL证书 主机名指示 兼容性 配置HTTPS主机,必须在server配置块中打开SSL协议 ...
最新文章
- FileNameFilter过滤器的使用和Lambda优化程序
- POJ3013 Big Christmas Tree(最短路径树)
- C语言#include还有些你不知道的事
- 技术要求→物理安全→防盗窃和防破坏
- java算法,发扑克牌
- EventLoop,TcpClient,TcpServer 中的生命周期
- typescript的类型转化
- 单片机c语言自学视频教程下载,郭天祥 十天学会单片机和C语言编程视频教程
- Winform的菜单控件
- jer中无html文件,jsoup抓取网页+详细讲解
- DA14580外设篇之GPIO中断
- Linux之恢复删除的数据
- 虚拟机是什么?有什么用
- keras系列︱人脸表情分类与识别:opencv人脸检测+Keras情绪分类(四)
- Android 语音播报之项目实战
- Ubuntu18.04 WPS安装后,提示“系统缺失字体symbol、wingdings、wingdings 2、wingdings 3、webding”的解决方法
- 两台笔记本组建无线局域网共享上网
- 应用 AddressSanitizer 发现程序内存错误
- 聊一聊基础的CPU寄存器~
- 场效应管调光电路图_场效应管做开关电路图(两款电路图分享)
热门文章
- IDEA 工作区面板设置
- 2014年去哪网校园招聘
- IDEA上操作Gitlab上面的项目——小白必学
- 新规持续发力,OTC行业最严冻卡潮袭来 |链捕手
- 非root用户更新glibc版本的悲惨故事
- 两步搞掉电脑开机密码
- c语言编译undeclared,c语言中undeclared identifier是什么意思?,undeclared identifier c语言错误 怎么改...
- 2023最新自动驾驶面试题汇总(持续更新中)
- 膜拜大佬!java设计模式刘伟课后答案
- 圣彼得堡大学计算机专业好吗,计算机专业的天堂—圣彼得堡信息技术、机械与光...