CentOS/Rocky/AlmaLinux8配置Apache的HTTPS

一年好景君须记,最是橙黄橘绿时。这篇文章主要讲述CentOS/Rocky/AlmaLinux8配置Apache的HTTPS相关的知识,希望能为你提供帮助。
一、简介 1.1 HTTPWeb服务器在默认情况下使用HTTP,这是一个纯文本的协议。正如其名称所暗示的,纯文本协议不会对传输中的数据进行任何形式的加密。而基于HTTP的Web服务器是非常容易配置,它在安全方面有重大缺陷。任何”中间人”,通过精心防止的数据包嗅探器,是能够看到任何经过的数据包内容。更进一步,恶意用户甚至可以在传输路径设置一个假冒的WEB服务器冒名顶替实际的目标Web服务器。在这种情况下,最终用户可能实际上与假冒者服务器,而不是真正的目的服务器进行通信。这样,恶意用户可以通过精心设计的表单欺骗终端用户获取到敏感信息,如用户名密码。
1.2 HTTPS为了处理这些类型的漏洞,大多数供应商往往在他们的web服务器应用HTTPS协议。对于只读类型的网站,用户只能读取内容,并没有实际提交任何信息,HTTP仍然是一个可行的选择。但是,对于保存敏感信息的网站,比如:用户需要登录来获得网站的服务,那么HTTPS是必须的。HTTPS能够为一个网站提供以下能力:

  • 确保所有经过服务器传输的数据包都是经过加密的。
  • 建立了一个官方数字证书证书,使得假冒服务器无法冒充真正的服务器。
1.3 证书获取途径
  • 自签名证书被推荐用于测试目的和个人项目。自签名证书,也可以用于服务提供商,不过一般适用于用户互相信任的情形。另外,自签名证书不用花钱购买。
  • 证书可以由社区为基础的认证供应商如StartSSL和CACERT办法。这些证书也不需要花钱,但建议为个人项目。
  • 对于全球性商业网站,建议从值得信赖的知名证书颁发机构购买证书。这些证书需要花钱,但他们增加了网络服务提供商的信誉。
1.4 自签名证书证书(Cerificate)的基本作用是将一个公钥和安全个体(个人、公司、组织等)的名字绑定在一起。
一般情况下,制作证书:首先使用openssl genrsa生成一个私钥,然后用openssl req生成一个签署请求,最后把请求交给CA,CA签署后就成为该CA认证的证书了。如果在第二步请求时加上-x509参数,那么就直接生成一个self-signed的证书,即自己充当CA认证自己。使用自签名(self-signed)的证书,它的主要目的不是防伪,而是使用户和系统之间能够进行SSL通信,保证密码等个人信息传输时的安全。
关键名词
  • RSA:私钥能解密用证书公钥加密后的信息。通常以.key为后缀,表示私钥也称作密钥。是需要管理员小心保管,不能泄露的。
  • CSR:Certificate Signing Request,证书签名请求,包含了公钥和名字信息。通常以.csr为后缀,是网站向CA发起认证请求的文件,是中间文件。证书通常以.crt为后缀,表示证书文件。
  • CA:Certifying Authority,表示证书权威机构,它的职责是证明公钥属于个人、公司或其他的组织。
二、生成证书(自签名) 2.1 准备
sudo dnf install mod_ssl openssl

2.2 生成私钥
openssl genrsa -out server.key 2048

2.3 生成证书签名请求(CSR)
openssl req -new -key server.key -out server.csr

注:这里需要填写许多信息,如国家,省市,公司等。
2.4 生成自签名证书
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

注:有效期3560天。
三、配置HTTPS服务器 3.1 将文件复制到对应的目录。
sudo cp server.crt /etc/pki/tls/certs/ sudo cp server.key /etc/pki/tls/private/ sudo cp server.csr /etc/pki/tls/private/

3.2 配置Apache Web服务器修改配置文件
sudo vim /etc/httpd/conf.d/ssl.conf... ### overwrite the following parameters ### SSLCertificateFile /etc/pki/tls/certs/server.crt SSLCertificateKeyFile /etc/pki/tls/private/server.key ...

修改端口号,将httpd.conf中 Listen 80 这项给注释掉
sudo vim /etc/httpd/conf.d/httpd.conf... #Listen 80 ...

在httpd.conf导入配置文件
sudo vim /etc/httpd/conf/http.conf... Include conf.d/ssl.conf Include conf.d/vhost/*.conf

将http重定向到https
< VirtualHost *:80> DocumentRoot /var/www/html ServerName www.srv.world RewriteEngine On RewriteCond %HTTPS off RewriteRule ^(.*)$ https://%HTTP_HOST%REQUEST_URI [R=301,L] < /VirtualHost>

【CentOS/Rocky/AlmaLinux8配置Apache的HTTPS】防火墙
sudo firewall-cmd --add-service=https success sudo firewall-cmd --runtime-to-permanent success


    推荐阅读