Linux -- 进阶 Web服务器 搭建基于 HTTPS 协议的静态网站 (实验实操)

news2024/11/27 0:47:42

     

        现在我们想架设一个 互联网网站的话,我们就得想法认证自己是官方的,得产生一个证书

        这个证书呢,我们使用的是 X.509  格式的证书 

                              该证书 包含三个文件 :  key , csr , crt 。  

        先介绍下 : 

PKI(Public Key Infrastructure)公钥基础设施是提供公钥加密和数字签名服务的系统或平台,目的是为了管理密钥和证书。一个机构通过采用PKI 框架管理密钥和证书可以建立一个安全的网络环境

PKI 主要包括四个部分:X.509 格式的证书(X.509 V3)和证书废止列表CRL(X.509 V2);CA 操作协议;CA管理协议;CA政策制定

X.509通用的证书格式包含三个文件:key,csr,crt。

===>>>

key是私钥文件

csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名

crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息

使用 Apache + mod_ssl 组件的加密认证网站  : 

   

      概念 :   

            因为 Apache ( httpd )  是没有任何安全性的限制的 ,所以需要安装一个 mod_ssl 组件。

            mod_ssl 组件 :    是 Apache 的一个模块,以 openssl ( 就相当于 ssh) 的工具箱为基础 

                                         专门为 Apache 提供密码保护的一种组件模块儿~~!!

预备工作  : 

   安装  Apache ( httpd ) 

   ===>>>     

[root@server ~]# dnf install httpd -y 

   安装 mod_ssl 组件  : 

    ===>>>                 

[root@server ~]# dnf install mod_ssl -y 

     配置文件  : 

 主配置文件 :  /etc/httpd/conf.d/ssl.conf

 证书文件目录 : /etc/pki/tls/certs/xxxx.crt  (  以  .crt 结尾的都是 证书文件 )

 私钥文件  :   /etc/pki/tls/private/xxxx.key   ( 以  .key   )

       

      进入主配置文件看看  : 

[root@server ~]# vim /etc/httpd/conf.d/ssl.conf

     ===>>>

5  Listen 443 https     #   监听端口号 ( 443 ) 

18 SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog   # 存储证书的密码信息 

23 SSLSessionCache      shmcb:/run/httpd/sslcache(512000)    #  ssl 的缓存 及 存储位置 

24 SSLSessionCacheTimeout  300    #  缓存的超时时长  

40 <VirtualHost _default_:443>    #  重要**    定义虚拟主机的信息,配置  

48 ErrorLog logs/ssl_error_log    #   错误日志     

49 TransferLog logs/ssl_access_log    #  传输日志 
 
50 LogLevel warn             #  日志等级  

54 SSLEngine on              #  SSL 引擎是否开启  ( on 开启 )

66 SSLHonorCipherOrder on      # 协商算法 ( 是否开启 ) 

85 SSLCertificateFile /etc/pki/tls/certs/localhost.crt   #  证书存储路径 ( 建议主机名 来表示,你主机名是啥,localhost 就是啥 ) 

93 SSLCertificateKeyFile /etc/pki/tls/private/localhost.key   # 私钥文件路径 

202 </VirtualHost>  #  虚拟主机结束定义 

                        *    第一列数字为 行号 

                        *    从 第 40 行 开始 到 202 行 结束 都是 虚拟主机 的相关配置

 

      切换到 证书文件目录 看看 : 

[root@server ~]# cd /etc/pki/tls/certs
[root@server certs]# ls 
ca-bundle.crt  ca-bundle.trust.crt

     就可以看到 以  .crt   结尾的文件 (  即是 数字证书 )

 实验  : 

       *   搭建 HTTP + SSL  的加密认证Web 服务器 

     

       *    准备工作  ( 就和 预备工作 一样 )

           #    关闭 Selinux  及 防火墙  

[root@server ~]# setenforce 0 
[root@server ~]# systemctl stop firewalld 

           #    安装  : 

[root@server ~]# dnf install httpd -y 

[root@server ~]# dnf install mod_ssl -y 

          #    新建网页存储目录, 并使用 xftp 上传网页文件  

[root@server ~]# mkdir -p  /www/andy 

                XFTP 上传文件 

                ===>>>                 

 

       

         *   在  /etc /pki /tls /private   目录下生成私钥文件        

             #  私钥文件必须建立在指定目录下  ( 前面介绍 主文件配置里 就有 )

                 ===>>>               

[root@server ~]# cd /etc/pki/tls/private/

                 就在这个目录下建立 私钥文件  

            #  还得介绍一个新命令  >>>>>   openssl  

            #   建立私钥文件过程  

                ===>>>> 

[root@server private]# openssl genrsa -aes128 2048 > andy.key # 建一个私钥文件,名为 andy.key
Enter PEM pass phrase:                   # 键入了 123456  ( 是不显示的,意思是对私钥还要再加密一下 )
Verifying - Enter PEM pass phrase:       # 再次输入密码
[root@server private]# ls                # 显示下有没有文件,显示出了 
andy.key

           我们就是通过 opensll 命令 ( 是一个加密组件的命令 ) , genrsa 是建立私钥文件的,

           -aes128  2048 ( 设置 密钥位数  )   

           >  andy.key  把信息写到 andy.key 文件中 ( andy.key 就是 私钥文件名称 )

       

        *   在   /etc/pki//tls/certs 目录下 新建证书 

            实操 : 

[root@server ~]# cd /etc/pki/tls/certs  # 在该目录下 新建证书 

[root@server certs]# openssl req -utf8 -new -key /etc/pki/tls/private/andy.key -x509 -days 365 -out andy.crt
Enter pass phrase for /etc/pki/tls/private/andy.key:     #  输入私钥加密密码 ( 前面的 123456)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:86
State or Province Name (full name) []:shanxi
Locality Name (eg, city) [Default City]:xi'an
Organization Name (eg, company) [Default Company Ltd]:openlab
Organizational Unit Name (eg, section) []:RHCE
Common Name (eg, your name or your server's hostname) []:localhost
Email Address []:andy@qq.com

  ===>>> 

      我们要建立自己的证书 ( 在上示目录下 是已经有两个 证书文件的 ) 我们要建立自己的证书

          而且自己建立的证书 还要 匹配前面的私钥 ~!!

     #   还是使用的 openssl 命令, req 是专门用来建立 证书的, 证书的字符编码 : utf8  

          -new  表示 新建, -key  代表加密, 紧接着的路径 是 证书的私钥路径 ,

          -x509 是证书的制作协议,  -days  是 证书的有效期 365 天, 

          - out  代表把证书 输到 什么地方去 ( 可以是相对路径我们用的就是相对路径,也可以绝对

          路径) 

          当这一串命令执行完成后, 会让你输入 私钥的密码 ( 就是 你当时设置的密码 - 123456 )

           

          执行完成后 就到了输入证书的相关信息 : 

          第一行 : 国家名称 ( 是以 编码输入的,我们国家是 86 ) 

          第二行 : 省名称  

          第三行 : 城市名称 

          第四行 : 公司名称  

          第五行 : 公司部门 

          第六行 : 当前主机名 (你有主机名就写主机名,没有主机名那就写通用主机名 - localhost )

          第七行  :邮箱地址 

          我们浏览下 看下目录里面 有没有 我们刚才建的 证书文件  

          ===>>> 

         

          我们大致浏览下 andy.crt 文件的内容 

          ===>>> 

          

         

        

      *   主配置文件的编辑,输入新的配置信息 

          打开主配置文件

          ===>>>

[root@server certs]# vim /etc/httpd/conf.d/ssl.conf

          进入配置文件,调至最后,添加内容 : 

          ​​​​​​​ 

          我们直接就在 主配置文件,定位最后一行,添加上示标记内容。 

          对上式添加内容做以说明 

          ===>>>  


204 <VirtualHost 192.168.153.130:443>        # 访问的IP地址 及 端口号
205         SSLEngine on                     # 开启 ssl 引擎 
206         SSLCertificateFile /etc/pki/tls/certs/andy.crt       #  证书路径 
207         SSLCertificateKeyFile  /etc/pki/tls/private/andy.key    # 私钥路径
208         ServerName      192.168.153.130    # 主机名 
209         DocumentRoot    /www/andy          # 网页启动目录 
210 </VirtualHost>
211 
212 <Directory /www/andy>                # 网站目录的权限    
213         AllowOverride   none
214         Require all granted
215 </Directory>

       上示内容,添加完成后,重启 Apache ( 重启 Httpd )

        ===>>> 

[root@server ~]# systemctl restart httpd

      

   重启之后,会让你输入 私钥加密密码( 之前设置的私钥加密密码 ) 

  

   输入完 密钥之后即可  验证 

    验证实验  : 

     在网站上验证 : 

     

       点击 高级 (  在 地址栏输入  https://  IP 地址 ) 

       

        即 验证成功 ~!!!!

  

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/598423.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++中关于引用变量初始化的一些总结

目录 1 问题2 引用初始化的说明3 示例代码 1 问题 函数的引用参数要求比较严格&#xff0c;今天就因为一个问题卡住了。我将此问题简化为下面的演示代码&#xff0c; #include <stdio.h>class CBase { public:CBase() {};virtual ~CBase() {}; };class CDerive :public …

Baumer工业相机堡盟工业相机如何使用BGAPISDK联合Halcon将图像中的六一快乐字体提取出来(C#)

Baumer工业相机堡盟工业相机如何使用BGAPISDK联合Halcon将图像中的六一快乐字体提取出来&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机使用Halcon图像算法的技术背景Baumer工业相机通过BGAPI SDK联合Halcon使用图像算法1.引用合适的类文件2.BGAPISDK在图像回调中引…

ppt怎么转pdf?经验分享

随着现代技术的不断发展&#xff0c;PPT已经成为了一种常见的演示工具。然而&#xff0c;在某些情况下&#xff0c;我们需要将PPT转换成PDF文件。PDF文件具有易读性强、占用空间小、易于传输等优点&#xff0c;因此在一些场合下&#xff0c;PDF文件更为实用。那么&#xff0c;如…

【JavaSE】Java基础语法(四十二):NIO

文章目录 1. 概述2. NIO与BIO的区别3. NIO三大模块4. NIO创建缓冲区对象【应用】5. NIO缓冲区添加数据【应用】6. NIO缓冲区获取数据【应用】7. 小结 1. 概述 BIO Blocking IO,阻塞型IONIO No Blocking IO,非阻塞型IO阻塞IO的弊端 在等待的过程中,什么事也做不了非阻塞IO的好处…

【正点原子STM32连载】 第二十三章 电容触摸按键实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第二十…

Java网络开发(Tomcat)—— 登陆 和 注册功能 的实现 和 迭代升级

目录 引出登陆功能---从html到jsp1.登陆--用post请求2.用html文件的form表单登陆&#xff08;1&#xff09;index.html页面&#xff08;2&#xff09;login.html登陆的页面&#xff08;3&#xff09;LoginServlet.java处理输入信息的代码&#xff08;4&#xff09;登陆成功&…

分布式事务一 事物以及分布式事物介绍

一 事务简介 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。在关系数据库中&#xff0c;一个事务由一组SQL语句组成。事务应该具有4个属性&#xff1a;原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。 原子性&#xff08;at…

MyBatis - Spring Boot 集成 MyBatis

文章目录 1.版本要求2.导入依赖3.自动配置2.可配置项 MyBatis-Spring-Boot-Starter 可以帮助你更快地在 Spring Boot 之上构建 MyBatis 应用。通过使用该模块我们能够快速实现以下目的&#xff1a; 构建单体应用程序将几乎不需要样板配置使用更少的 XML 配置 1.版本要求 MyB…

Apache Kafka - 构建数据管道 Kafka Connect

文章目录 概述主要概念ConnectorTasksWorkesConvertersTransformsDead Letter Queue 主要使用场景主要价值Kafka Connect API vs Producer 和 Consumer API构建数据管道时需要考虑的主要问题ETL VS ELT数据整合方式的不同ETL 和 ELT 各有优缺点: 概述 Kafka Connect 是一个工具…

Linux二——Web基础与HTTP协议

Web基础与HTTP协议 一、Web基础1. 域名的概念2.域名空间结构3.域名注册4.网页的概念5. HTML概念6.网页基本标签1 二、HTTP协议1.HTTP概念2.HTML的基本标签3.头标签中常用标签4.内容标签中常用的标签 三、动态网页与静态网页1.静态网页2.动态网页3.动态网页和静态网页的区别4.动…

软件测试目的是什么?软件测试公司可提供哪些测试服务类型?

随着科技的不断发展&#xff0c;软件行业的发展也越来越迅速。然而&#xff0c;随着软件的增多和复杂性的提高&#xff0c;开发者们需要更多的手段来确保软件质量。软件测试就是通过一系列的测试来发现软件的问题&#xff0c;从而提高软件的质量。 一、软件测试目的是什么? …

Unity中的UniTask如何取消指定的任务或所有的任务

今天儿童节&#xff0c;犬子已经9个多月了&#xff0c;今天是他的第一个儿童节。中年得子&#xff0c;其乐无穷无尽啊… 〇、 示例效果 一连创建5个异步任务[id 从0~4]&#xff0c;先停止其中的第id 4的任务&#xff0c;再停止所有的任务 一、CancellationTokenSource有什…

利用矩阵分解实现图像压缩(实验)

机器学习的课程&#xff0c;老师布置了一个实验报告&#xff0c;当我看到实验内容&#xff0c;傻眼了&#xff0c;手写计算矩阵特征值和特征向量的函数&#xff0c;这给我整无语了&#xff0c;直接调用已有的不好吗&#xff0c; 我直接摆烂。 实验报告放这了&#…

【C#图解教程】 第六章 方法(上)

方法的结构 方法是一块具有名称的代码&#xff0c;在类和结构中都经常用到 局部变量 局部变量位于方法内部&#xff0c;在方法中声明时产生&#xff0c;在方法执行结束时结束 类型推断与var关键字 某些情况下&#xff0c;在声明的开始部分包含类型名是多余的&#xff0c;因为…

Python-python判断语句:布尔类型和比较运算符、if语句的基本格式、if else语句、if el if else语句、判断语句的嵌套、实战案例

版本说明 当前版本号[20230601]。 版本修改说明20230601初版 知识总览图 目录 文章目录 版本说明知识总览图目录Python判断语句布尔类型和比较运算符布尔类型布尔类型的定义 比较运算符 if语句的基本格式if判断语句if语句的注意点 if else 语句语句注意点 if elif else语句注…

7min 到 40s:SpringBoot 优化居然可以玩出这么多花样!

0 背景 公司 SpringBoot 项目在日常开发过程中发现服务启动过程异常缓慢&#xff0c;常常需要6-7分钟才能暴露端口&#xff0c;严重降低开发效率。通过 SpringBoot 的 SpringApplicationRunListener 、BeanPostProcessor 原理和源码调试等手段排查发现&#xff0c;在 Bean 扫描…

“灵巧小工具”一个将图片处理成打印纸尺寸的丰富功能完全免费无水印的图片处理工具

今天推荐一款微信小程序“灵巧小工具”&#xff0c;经常有打印图片需求的用户赶紧收藏了。 可以先扫码体验一番&#xff1a; 下面介绍一下它的主要功能&#xff1a; 1.照片&#xff08;1寸、2寸、5寸、6寸&#xff09; 支持1寸&#xff0c;2寸照片自动排版&#xff0c;生成相纸…

JavaSE】Java基础语法(四十):UDP通信程序

文章目录 1. UDP发送数据2. UDP接收数据【应用】3. UDP通信程序练习【应用】4. UDP三种通讯方式 1. UDP发送数据 Java中的UDP通信 UDP协议是一种不可靠的网络协议&#xff0c;它在通信的两端各建立一个Socket对象&#xff0c;但是这两个 Socket只是发送&#xff0c;接收数据的对…

IPv6 6to4隧道配置和验证实验

IPv6 6to4隧道配置和验证实验 【实验目的】 熟悉IPv6 6to4隧道的概念。 掌握IPv6和IPv4共存的实现方法。 掌握IPv6 6to4地址编址规则。 掌握IPv6 6to4隧道的配置。 验证配置。 【实验拓扑】 设备参数如下表所示。 设备 接口 IP地址 子网掩码 默认网关 R1 S0/0 19…

cuda编程学习——CUDA共享内存性能优化(九)

前言 参考资料&#xff1a; 高升博客 《CUDA C编程权威指南》 以及 CUDA官方文档 CUDA编程&#xff1a;基础与实践 樊哲勇 文章所有代码可在我的GitHub获得&#xff0c;后续会慢慢更新 文章、讲解视频同步更新公众《AI知识物语》&#xff0c;B站&#xff1a;出门吃三碗饭 …