阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux下配置Apache实现HTTPS访问

667次阅读
没有评论

共计 8578 个字符,预计需要花费 22 分钟才能阅读完成。

Linux 下编译安装 Apache 并且配置 HTTPS 访问。https 是超文本传输安全协议,是一种网络安全传输协议。http 协议传输的数据都没有加密,一些私密的信息不安全,https 经由超文本传输协议(http)进行通信,利用 SSL/TLS 来加密数据包,https 开发的主要目的就是为了保护数据传输的安全性。

1、软件环境

HTTPS 是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版。谷歌已经制定了一项长远的计划,它的最终目标是将所有通过 HTTP 协议呈现的网页标为“不安全”,对于站长来说,部署 SSL 证书来迁移到 HTTPS 是一个现实和重要的问题

操作系统:CentOS 7.3

Apache 版本:编译安装的 Apache 2.4.7

IP 地址:192.168.115.120

对应的测试域名:www.awstats.com

关闭 selinux 和关闭防火墙,也可以提前设置好防火墙的规则

Windows 的 hosts 文件中需要添加”192.168.115.120 www.awstats.com”域名解析

使用 Windows 浏览器测试是否成功

2、给 Apache 安装 ssl 模块

为了使 Apache 支持 https 访问,系统需要安有 apache、openssl、mod_ssl.so

Linux 系统默认安装了 openssl,所有就不需要安装了,由于某些原因,apache 的 ssl 模块在最初安装时未能包含进去,在之后又不能重新安装 apache,这时就需要在不重新编译 apache 的情况下新增编译模块,可采用以下方法

(1)进入 Apache 的源码解压的 /modules/ssl 目录执行安装命令

[root@www modules]# whereis openssl

openssl: /usr/bin/openssl /usr/lib64/openssl /usr/include/openssl /usr/share/man/man1/openssl.1ssl.gz

[root@www ~]# cd /root/httpd-2.4.7/modules/ssl

[root@www ssl]# apxs -i -c -a -D HAVE_OPENSSL=1 -I /usr/include/openssl -lcrypto -lssl -ldl *.c

/usr/local/apr/build-1/libtool –silent –mode=compile gcc -std=gnu99 -prefer-pic  -DLINUX -D_REENTRANT -D_GNU_SOURCE -g -O2 -pthread -I/usr/local/apache2/include  -I/usr/local/apr/include/apr-1  -I/usr/local/apr-util/include/apr-1  -I/usr/include/openssl -DHAVE_OPENSSL=1  -c -o mod_ssl.lo mod_ssl.c && touch mod_ssl.slo

In file included from mod_ssl.c:27:0:

ssl_private.h:85:30: 致命错误:openssl/opensslv.h:没有那个文件或目录

 #include <openssl/opensslv.h>

                              ^

编译中断。

apxs:Error: Command failed with rc=65536

上面出现编译报错,说缺少 openssl 某个文件

解决方法:

[root@www ssl]# yum -y install openssl-devel

上面安装完成之后,接着执行之前的编译模块命令

[root@www ssl]# apxs -i -c -a -D HAVE_OPENSSL=1 -I /usr/include/openssl -lcrypto -lssl -ldl *.c

…………………………………………………………………………………………………………………省略若干

libtool: install: chmod 644 /usr/local/apache2/modules/mod_ssl.a

libtool: install: ranlib /usr/local/apache2/modules/mod_ssl.a

libtool: finish: PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/sbin” ldconfig -n /usr/local/apache2/modules

———————————————————————-

Libraries have been installed in:

  /usr/local/apache2/modules

If you ever happen to want to link against installed libraries

in a given directory, LIBDIR, you must either use libtool, and

specify the full pathname of the library, or use the ‘-LLIBDIR’

flag during linking and do at least one of the following:

  – add LIBDIR to the ‘LD_LIBRARY_PATH’ environment variable

    during execution

  – add LIBDIR to the ‘LD_RUN_PATH’ environment variable

    during linking

  – use the ‘-Wl,-rpath -Wl,LIBDIR’ linker flag

  – have your system administrator add LIBDIR to ‘/etc/ld.so.conf’

See any operating system documentation about shared libraries for

more information, such as the ld(1) and ld.so(8) manual pages.

———————————————————————-

chmod 755 /usr/local/apache2/modules/mod_ssl.so

[activating module `ssl’ in /usr/local/apache2/conf/httpd.conf]

apxs 命令参数说明:

-i  此选项表示需要执行安装操作,以安装一个或多个动态共享对象到服务器的 modules 目录中。

-a  此选项自动增加一个 LoadModule 行到 httpd.conf 文件中,以激活此模块,或者,如果此行已经存在,则启用之。

-A  与 -a 选项类似,但是它增加的 LoadModule 命令有一个井号前缀(#),即此模块已经准备就绪但尚未启用。

-c  此选项表示需要执行编译操作。它首先会编译 C 源程序(.c)files 为对应的目标代码文件(.o),然后连接这些目标代码和 files 中其余的目标代码文件(.o 和.a),以生成动态共享对象 dsofile。如果没有指定 -o 选项,则此输出文件名由 files 中的第一个文件名推测得到,也就是默认为 mod_name.so

(2)查看安装的 ssl 模块

[root@www ssl]# ls -l /usr/local/apache2/modules/ | grep ssl

-rwxr-xr-x 1 root root 945280 5 月  16 15:20 mod_ssl.so

3、申请证书或自己生成自签名证书

我们可以使用 openssl 工具自己生成证书或者到各大厂商去申请免费证书,可满足个人网站的需求,如企业网站,建议购买企业收费证书。

这里我们就自己生成一个自签名证书

首先,生成 2048 位的加密私钥

[root@www ~]# openssl genrsa -out server.key 2048

Generating RSA private key, 2048 bit long modulus

………………..+++

..+++

e is 65537 (0x10001)

然后,生成证书签名请求(CSR),这里需要填写许多信息,如国家,省市,公司等

[root@www ~]# openssl req -new -key server.key -out server.csr

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]:cn

State or Province Name (full name) []:bj

Locality Name (eg, city) [Default City]:bj

Organization Name (eg, company) [Default Company Ltd]:ll

Organizational Unit Name (eg, section) []:lz

Common Name (eg, your name or your server’s hostname) []:www.awstats.com

注意这里的主机名一定要和 httpd.conf 文件中的 ServerName www.awstats.com 保持一致,否则会报错。

Email Address []:123456@163.com

Please enter the following ‘extra’ attributes

to be sent with your certificate request

A challenge password []:123456

An optional company name []:

最后,生成类型为 X509 的自签名证书。有效期设置 3650 天,即有效期为 10 年

[root@www ~]# openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

Signature ok

subject=/C=cn/ST=bj/L=bj/O=ll/OU=lz/CN=www.awstats.com/emailAddress=123456@163.com

Getting Private key

4、复制秘钥和证书文件到指定位置

[root@www ~]# cp server.crt server.key /usr/local/apache2/conf

5、修改 httpd-ssl.conf 文件指定相关秘钥和证书位置

[root@www ~]# vim /usr/local/apache2/conf/extra/httpd-ssl.conf

<VirtualHost _default_:443>

DocumentRoot “/usr/local/apache2/htdocs”

ServerName www.awstats.com:443

ServerAdmin you@example.com

ErrorLog “/usr/local/apache2/logs/error_log”

TransferLog “/usr/local/apache2/logs/access_log”

SSLEngine on

SSLCertificateFile “/usr/local/apache2/conf/server.crt”

SSLCertificateKeyFile “/usr/local/apache2/conf/server.key”

…………………………………………….. 省略若干

</VirtualHost>

6、修改 Apache 主配置文件并开启相关模块

[root@www ~]# vim /usr/local/apache2/conf/httpd.conf

打开相关的注释,启用需要的模块

LoadModule rewrite_module modules/mod_rewrite.so

LoadModule ssl_module        modules/mod_ssl.so

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

修改主机名

ServerName www.awstats.com

下面的需要添加进来

RewriteEngine on

RewriteCond %{SERVER_PORT} !^443$

RewriteCond %{REQUEST_URI} !^/tz.php

RewriteRule (.*) https://%{SERVER_NAME}/$1 [R]

7、相关说明

配置文件参数

说明

LoadModule

加载 SSL 模块

Listen

监听 443 端口

DocumentRoot

网页目录

ServerName

站点域名

SSLEngine   on

启用 SSL 功能

SSLCertificateFile

证书文件

SSLCertificateKeyFile

私钥文件

SSLCertificateChainFile

证书链文件

8、重启 Apache 并检查相应端口是否开启

[root@www ~]# httpd -t

Syntax OK

[root@www ~]# systemctl restart httpd

[root@www ~]# ss -ant

State      Recv-Q Send-Q        Local Address:Port      Peer Address:Port                                 

LISTEN      0      128                :::80            :::*                 

LISTEN      0      128                :::22            :::*                 

LISTEN      0      100                ::1:25            :::*                 

LISTEN      0      128                :::443            :::*     

9、在 Windows 浏览器测试访问域名是否能自动成功跳转到 https

在浏览器地址栏输入 www.awstats.com 域名,然后回车

Linux 下配置 Apache 实现 HTTPS 访问

上面回车之后,会自动跳转到下面的页面,我们点击“高级”选项会展开相关内容

Linux 下配置 Apache 实现 HTTPS 访问

上面点击“高级”选项之后,会出现下面的页面,我们点击下面的红框部分就可以进入下一步

Linux 下配置 Apache 实现 HTTPS 访问

上面点击红框部分之后,就会出现下面的网页了。因为是自己生成的证书不被浏览器识别,所以会出现下面的页面,说此站点不安全,我们直接不用管点击详细信息并接着点击“转到此网页(不推荐)”选项即可进入我们需要的网页了

Linux 下配置 Apache 实现 HTTPS 访问

下面是我们需要访问的最终页面,如果是在各大厂商申请的证书就不会出现以上提示不安全的信息,会直接进入我们下面的界面。

Linux 下配置 Apache 实现 HTTPS 访问

二、yum 安装的 Apache 配置 https 方法

1、安装相关软件

[root@localhost ~]# yum -y install httpd

[root@localhost ~]# yum -y install mod_ssl

2、修改相关的配置文件

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf

去掉下面几行注释

Include conf.modules.d/*.conf

ServerName www.awstats.com

IncludeOptional conf.d/*.conf

下面的需要添加在主配置文件中或虚拟主机中

RewriteEngine on

RewriteCond %{SERVER_PORT} !^443$

RewriteCond %{REQUEST_URI} !^/tz.php

RewriteRule (.*) https://%{SERVER_NAME}/$1 [R]

[root@localhost conf.modules.d]# vim /etc/httpd/conf.modules.d/00-ssl.conf

去掉下面的注释

LoadModule ssl_module modules/mod_ssl.so

[root@localhost ~]# vim /etc/httpd/conf.modules.d/00-base.conf

去掉下面的注释

LoadModule rewrite_module modules/mod_rewrite.so

3、生成相关的证书及秘钥文件

[root@localhost ~]# openssl genrsa -out server.key 2048

Generating RSA private key, 2048 bit long modulus

………………………………………………………..+++

……………………..+++

e is 65537 (0x10001)

[root@localhost ~]# openssl req -new -key server.key -out server.csr

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]:cn

State or Province Name (full name) []:bj

Locality Name (eg, city) [Default City]:bj

Organization Name (eg, company) [Default Company Ltd]:ll

Organizational Unit Name (eg, section) []:lz

Common Name (eg, your name or your server’s hostname) []:www.awstats.com

Email Address []:123456@163.com

Please enter the following ‘extra’ attributes

to be sent with your certificate request

A challenge password []:123456

An optional company name []:

[root@localhost ~]# openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

Signature ok

subject=/C=cn/ST=bj/L=bj/O=ll/OU=lz/CN=www.awstats.com/emailAddress=123456@163.com

Getting Private key

4、修改配置文件中对应的秘钥文件

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

去掉相关注释并更改证书和私钥文件

SSLEngine on

SSLCertificateFile /etc/pki/tls/certs/server.crt

SSLCertificateKeyFile /etc/pki/tls/private/server.key

复制生成的秘钥文件到 ssl.conf 指定的位置

[root@localhost ~]# cp /root/server.crt  /etc/pki/tls/certs/

[root@localhost ~]# cp /root/server.key  /etc/pki/tls/private/

5、验证配置是否有问题并重启 Apache 服务

[root@localhost ~]# httpd -t

Syntax OK

[root@localhost ~]# systemctl restart httpd

6、在 Windows 浏览器测试访问域名是否能自动成功跳转到 https

打开浏览器,输入 IP 或域名会自动跳转到 https,说明配置成功,因为是自己生成的证书不被浏览器识别,所以会出现下面的页面,说此站点不安全,我们直接不用管点,击详细信息

Linux 下配置 Apache 实现 HTTPS 访问

上面点击详细信息之后,或展开下面的页面,我们点击“转到此网页(不推荐)”即可进入我们需要访问的网站页面。

Linux 下配置 Apache 实现 HTTPS 访问

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计8578字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7999285
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
【1024程序员】我劝你赶紧去免费领一个AWS、华为云等的主机

【1024程序员】我劝你赶紧去免费领一个AWS、华为云等的主机

【1024 程序员】我劝你赶紧去免费领一个 AWS、华为云等的主机 每年 10 月 24 日,程序员们都会迎来...
星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛 NAS-7:手把手教你免费内网穿透 -Cloudflare tunnel 前言 大家好,我是星...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

  300 元就能买到的 ” 小钢炮 ”?惠普 7L 四盘位小主机解析 最近...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...