域内HTTPS服务器搭建

  • 测试环境:
  • 过程:
    • 局域网内使用
    • 生成自签证书
    • 使用生成的证书文件
    • apache的更改
  • 参考文章

测试环境:

JspStudy
Mkcert
windows Server 2012 r2

过程:

首先
安装Mkcert和JspStudy集成环境
使用命令:mkcert -install
仅仅这么一条简单的命令,就帮助我们将 mkcert 使用的根证书加入了本地可信 CA 中,以后由该 CA 签发的证书在本地都是可信的。
在 Windows 的可信 CA 列表可以找到该证书:

局域网内使用

有时候我们需要在局域网内测试 https 应用,这种环境可能不对外,因此也无法使用像Let’s encrypt这种免费证书的方案给局域网签发一个可信的证书,而且Let’s encrypt本身也不支持认证 Ip.

生成自签证书

先来回忆一下证书可信的三个要素:

由可信的 CA 机构签发
访问的地址跟证书认证地址相符
证书在有效期内
如果期望我们自签证书在局域网内使用,以上三个条件都需要满足。很明显自签证书一定可以满足证书在有效期内,那么需要保证后两条。我们签发的证书必须匹配浏览器的地址栏,比如局域网的 ip 或者域名,此外还需要信任 CA。

我们先重新签发一下证书,加上本机的局域网 ip 认证:

然后命令:mkcert www.example.com *.example.com 127.0.0.1 192.168.45.142

通过输出,我们可以看到成功生成了localhost+2.pem证书文件和localhost+2-key.pem私钥文件,只要在 web server 上使用这两个文件就可以了

使用生成的证书文件

默认生成的证书格式为PEM(Privacy Enhanced Mail)格式,任何支持PEM格式证书的程序都可以使用。比如常见的Apache或Nginx等,这里我们用 python 自带的SimpleHttpServer演示一下这个证书的效果(代码参考来自:

https://gist.github.com/RichardBronosky/644cdfea681518403f5409fa16823c1f

):
python2 版本(MacOS 自带的版本):

#!/usr/bin/env python2import BaseHTTPServer, SimpleHTTPServer
import sslhttpd = BaseHTTPServer.HTTPServer(('0.0.0.0', 443), SimpleHTTPServer.SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket(httpd.socket, certfile='./localhost+2.pem', keyfile='./localhost+2-key.pem', server_side=True, ssl_version=ssl.PROTOCOL_TLSv1_2)
httpd.serve_forever()

python3 版本:

#!/usr/bin/env python3import http.server
import sslhttpd = http.server.HTTPServer(('0.0.0.0', 443), http.server.SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket(httpd.socket, certfile='./localhost+2.pem', keyfile='./localhost+2-key.pem', server_side=True, ssl_version=ssl.PROTOCOL_TLSv1_2)
httpd.serve_forever()

使用python simple-https-server.py运行即可(注意 Linux/Unix 下绑定 443 端口需要 root 权限,你可能需要使用sudo提权)

再次验证发现使用https://192.168.45.142本机访问也是可信的。然后我们需要将 CA 证书发放给局域网内其他的用户。

然后命令:mkcert -CAROOT
使用mkcert -CAROOT命令可以列出 CA 证书的存放路径
可以看到 CA 路径下有两个文件rootCA-key.pem和rootCA.pem两个文件,用户需要信任rootCA.pem这个文件。将rootCA.pem拷贝一个副本,并命名为rootCA.crt(因为 windows 并不识别pem扩展名,并且 Ubuntu 也不会将pem扩展名作为 CA 证书文件对待),将rootCA.crt文件分发给其他用户,手工导入。

windows 导入证书的方法是双击这个文件,在证书导入向导中将证书导入受信任的根证书颁发机构

apache的更改

apche:去除httpd.conf(C:\JspStudy\Apache\conf\httpd.conf)文件中的以下內容的行前#註釋

LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf

修改完成后打开:C:\JspStudy\Apache\conf\extra\httpd-ssl.conf:
替换或修改内容

<VirtualHost *:443>DocumentRoot "C:\JspStudy\WWW\phproot"ServerName www.example.comServerAliasSSLEngine onSSLProtocol all -SSLv2 -SSLv3SSLCipherSuite AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL#SSLCertificateFile "C:\phpStudy\Apache\conf\ssl\www.wlphp.com\2_www.wlphp.com.crt" #SSLCertificateKeyFile "C:\phpStudy\Apache\conf\ssl\www.wlphp.com\3_www.wlphp.com.key"#SSLCertificateChainFile "C:\phpStudy\Apache\conf\ssl\www.wlphp.com\1_root_bundle.crt" SSLCertificateFile "C:/JspStudy/Apache/conf/www.example.com+3.pem"SSLCertificateKeyFile "C:/JspStudy/Apache/conf/www.example.com+3-key.pem"#SSLCertificateChainFile "D:/phpStudy/PHPTutorial/Apache/conf/ssl/ca-bundle.crt"<Directory "C:\JspStudy\WWW">Options FollowSymLinks ExecCGIAllowOverride AllOrder allow,denyAllow from allRequire all granted</Directory>
</VirtualHost>

将上面的路径SSLCertificateFile 和SSLCertificateKeyFile 改成用mkcert生成那两个文件的pem文件的位置 ,DocumentRoot 和Directory 也需要根据要求更改
这里有时候路径不对,也需要进行修改,修改后保存,重启apache即可

Apache 配置检查: httpd -t

Apache 开启日志在httpd.conf中去掉 CustomLog “logs/access.log” common 的注释

参考文章

https://learnku.com/articles/33952

https://www.twblogs.net/a/5d1715e4bd9eee1e5c82af29

https://blog.dteam.top/posts/2019-04/%E6%9C%AC%E5%9C%B0https%E5%BF%AB%E9%80%9F%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88mkcert.html

域内HTTPS服务器搭建相关推荐

  1. 文件服务器怎么和域同步ldap,ad域和ldap服务器搭建

    ad域和ldap服务器搭建 内容精选 换一换 OneAccess支持通过AD认证用户身份和控制权限.AD全称Active Directory,中文名称活动目录.您可以将AD简单理解成一个数据库,其存储 ...

  2. https服务器搭建

    本文介绍使用阿里云免费SSL证书搭建tomcat版的https服务器 1.在阿里云购买免费版SSL证书 绑定证书域名 关于域名要说的就是必须是备案过得顶级域名,本人开始使用二级域名配置完成后,tomc ...

  3. 小幺鸡,内网服务器搭建

    昨天晚上临近下班的时候经理给我发了个连接"http://git.oschina.net/zhoujingjie/apiManager",点开后我一脸懵逼,这不是和github类似嘛 ...

  4. 微信小程序接入,https服务器搭建和调试

    在进行小程序开发时候,调试时候,希望在本地搭建一个https环境. 准备条件: 1.公网主机(阿里云或者腾讯云主机) 2外网访问工具natapp 步骤: 1.在主机上安装nginx(nginx转发到n ...

  5. Windows2008服务器 搭建域控制器

    Windows2008服务器 搭建域控制器 说明 环境说明 搭建过程 检测域是否建立成功 说明 本文为在Windows2008服务器上搭建域控制器的过程说明,记录自用,也希望能够共同学习,如有不足,请 ...

  6. 使用nginx搭建https服务器

    最近在研究nginx,整好遇到一个需求就是希望服务器与客户端之间传输内容是加密的,防止中间监听泄露信息,但是去证书服务商那边申请证书又不合算,因为访问服务器的都是内部人士,所以自己给自己颁发证书,忽略 ...

  7. 腾讯云CentOS自建CA证书搭建https服务器

    为了完成实验以及不同电脑虚拟机不同,索性买了一个腾讯云的服务器,学生价,很便宜. 实验环境:CentOS7.5,Apache 2.4.6 OpenSSL 1.0.2k 理论知识 Http和Https的 ...

  8. 信息安全实践Lab1-自建CA证书搭建https服务器

    title: 信息安全实践Lab1-自建CA证书搭建https服务器 date: 2021-12-21 02:44:40 tags: 信息安全 categories: 信息安全实践 信息安全实践Lab ...

  9. weblogic域,管理服务器,受管服务器,集群和机器的基本知识

    1.域(Domain) •它是什么? –是一个逻辑上管理的WebLogic Server组,这些组从管理上当作一个整体来操作 •域里面有什么? –服务器 –服务器集群 –机器 •规则: –同一个域中的 ...

最新文章

  1. 关于VS中区分debug与release,32位与64位编译的宏定义
  2. 2022年最新限量红包封面,炸裂的不要不要的!速度领取!
  3. 【转载】PHP面向对象(OOP)编程入门教程
  4. HTML5的绝活:巧用Canvas制作会动的时钟
  5. Chrome 浏览器扩展 - Night Eye
  6. java MD5 并发
  7. linux在文件或文件夹中查找字符串
  8. php 字符符转整数
  9. asp.net C#绘制太极图
  10. 《Photoshop Lightroom4 经典教程》目录—导读
  11. android 蓝牙转串口_android蓝牙串口通讯
  12. 游戏测试用例及游戏测试bug详解
  13. 【Android】手撸抖音小游戏潜艇大挑战
  14. 2021最新域名授权系统网站源码 全新一键安装源码+卡密自助授权+全新UI界面
  15. 四大步骤,彻底关闭Win10自动更新
  16. 银行等单位工作日计算的实现
  17. 万用表怎么测量电池容量_万用表怎么检测电池容量_电池电量 - 全文
  18. FFmpeg 录制桌面、麦克风、摄像头
  19. 【Matlab电力负荷预测】日特征气象因素支持向量机SVM电力负荷预测【含源码 1612期】
  20. 1.JAVASE 语言简述

热门文章

  1. 四分位数的位置计算原理?
  2. Vmware虚拟机克隆后MAC地址IP地址修改并实现上网
  3. Interger和int
  4. TensorFlow识别复杂验证码以及搭建生产环境(1)—— 收集训练集
  5. 2012年十大外版图书
  6. MBA工商管理-管理类联考怎么复习?
  7. HashCode 理解测试
  8. 李航《统计学习方法》系列Python实现
  9. 手把手教你用 wxPython 设计一个可以弹琴的计算器
  10. iOS 自定义验证码输入框