如何在CentOS配置Apache的HTTPS服务

Web服务器在默认情况下使用HTTP,这是一个纯文本的协议。正如其名称所暗示的,纯文本协议不会对传输中的数据进行任何形式的加密。而基于HTTP的Web服务器是非常容易配置,它在安全方面有重大缺陷。任何"中间人",通过精心防止的数据包嗅探器,是能够看到任何经过的数据包内容。更进一步,恶意用户甚至可以在传输路径设置一个假冒的WEB服务器冒名顶替实际的目标Web服务器。在这种情况下,最终用户可能实际上与假冒者服务器,而不是真正的目的服务器进行通信。这样,恶意用户可以通过精心设计的表单欺骗终端用户获取到敏感信息,如用户名密码。

为了处理这些类型的漏洞,大多数供应商往往在他们的web服务器应用HTTPS协议。对于只读类型的网站,用户只能读取内容,并没有实际提交任何信息,HTTP仍然是一个可行的选择。但是,对于保存敏感信息的网站,比如:用户需要登录来获得网站的服务,那么HTTPS是必须的。 HTTPS能够为一个网站提供以下能力。

  • 确保所有经过服务器传输的数据包都是经过加密的。
  • 建立了一个官方数字证书证书,使得假冒服务器无法冒充真正的服务器。

需要建立支持HTTPS的WEB服务器所要做的第一件事就是获得数字证书。数字证书可以在以下任一方法来获得。

  1. 自签名证书被推荐用于测试目的和个人项目。自签名证书,也可以用于服务提供商,不过一般适用于用户互相信任的情形。另外,自签名证书不用花钱购买。
  2. 证书可以由社区为基础的认证供应商如StartSSL和CACERT办法。这些证书也不需要花钱,但建议为个人项目。
  3. 对于全球性商业网站,建议从值得信赖的知名证书颁发机构购买证书。这些证书需要花钱,但他们增加了网络服务提供商的信誉。

准备

在这篇文档中,我们将使用自签名证书。假设CentOS已经安装了Apache Web服务器。我们需要使用OpenSSL生成自签名证书。如果尚未安装OpenSSL,它可以使用yum来安装。

# yum install mod_ssl openssl

生成一个自签名证书

下面的命令可以被用来产生一个自签名的证书。首先,生成2048位的加密私钥。

# openssl genrsa -out ca.key 2048

然后生成证书签名请求(CSR)。

# openssl req -new -key ca.key -out ca.csr

最后,生成类型为X509的自签名证书。

# openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

创建证书后,将文件复制到对应的目录。

# cp ca.crt /etc/pki/tls/certs/
# cp ca.key /etc/pki/tls/private/
# cp ca.csr /etc/pki/tls/private/

配置Apache Web服务器

首先,修改下面的配置文件。

# vim /etc/httpd/conf.d/ssl.conf
### overwrite the following parameters ###
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key

### The following parameter does not need to be modified in case of a self-signed certificate. ###
### If you are using a real certificate, you may receive a certificate bundle. The bundle is added using the following parameters ###
SSLCertificateChainFile /etc/pki/tls/certs/example.com.ca-bundle

然后重新启动httpd服务使更改生效。

# service httpd restart

Web服务器现在可以使用HTTPS了!

调整虚拟主机

Apache Web服务器可以配置为多个Web站点。这些站点在httpd的配置文件中以虚拟主机的形式定义。例如,让我们假设我们的Apache Web服务器托管站点为virtual-web.example.com,网站所有的文件都保存在/var/www/html/virtual-web目录。
对于虚拟主机,典型的HTTP配置是这样的。

# vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin [email protected].com
    DocumentRoot /var/www/html/virtual-web
    ServerName virtual-web.example.com
</VirtualHost>

我们可以参考上面的配置创建HTTPS虚拟主机。

# vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:443

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/ca.crt
    SSLCertificateKeyFile /etc/pki/tls/private/ca.key
    <Directory /var/www/html/virtual-web>
        AllowOverride All
    </Directory>
    ServerAdmin [email protected].com
DocumentRoot /var/www/html/virtual-web
ServerName virtual-web.example.com
</VirtualHost>

需要按照上面的配置,定义每个虚拟主机。添加虚拟主机后,重新启动Web服务。

# service httpd restart

现在的虚拟主机就可以使用HTTPS了!

可选的配置:强制Apache Web服务器始终使用https

如果由于某种原因,你需要站点的Web服务器仅使用HTTPS,您需要将所有HTTP请求(端口80)重定向到HTTPS(端口443)。 Apache Web服务器可以容易地做到这一点。

1,强制主站使用

如果要强制主站使用HTTPS,我们可以这样修改httpd配置文件:

# vim /etc/httpd/conf/httpd.conf
ServerName www.example.com:80
Redirect permanent / https://www.example.com
# service httpd restart

2,强制虚拟主机

如果要强制在虚拟主机上使用HTTPS,对于HTTP可以按照下面进行配置:

# vim /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
    ServerName virtual-web.example.com
    Redirect permanent / https://virtual-web.example.com/
</VirtualHost>
# service httpd restart

综上所述,当存在如用户登录等交互时HTTPS总是推荐的方式,可以提高服务器的安全性。证书可以通过各种方式获得,如:自签名、社区提供的甚至商业机构够哦买的。管理员应当谨慎选择将要使用的证书的类型。

时间: 2024-12-06 15:41:48

如何在CentOS配置Apache的HTTPS服务的相关文章

centos配置apache的https服务

因为公司要开发微信小程序,由于小程序比较特殊,需要https服务,所以就研究了下apache的https服务了,大致过程如下: 1.向证书机构申请https证书,会得到证书和私钥 2.安装apache的mod_ssl.so模块 yum -y install mod_ssl 3.若启用了防火墙需要添加https服务(service iptables status或者在使用firewall的情况下用 systemctl status firewalld) 用iptables的情况 iptables 

详解CentOS配置和管理web服务-Apache

详解CentOS配置和管理web服务-Apache 家住海边喜欢浪:zhang789.blog.51cto.com 目录 1.web介绍 2.web历史和工作原理 3.http请求流程 4.关于Apache 5.Apache服务器软件安装使用 6.符号链接和虚拟目录 7.页面重定向 8.Apache日志文件 9.Apache安全配置 10.虚拟主机 10.1.基于IP 10.2.基于域名 10.3.基于端口 web服务器配置和管理 http协议简介 http协议,全称HyperText Tran

Centos7下配置phpMyAdmin(提供HTTPS服务)

Centos7下配置phpMyAdmin(提供HTTPS服务) phpMyAdmin可以通过web方式控制和操作MySQL数据库.通过phpMyAdmin 可以完全对数据库进行操作,例如建立.复制和删除数据等等. 配置环境 Centos7 2台(IP1:192.168.70 ; IP2:192.168.1.71) 关闭防火墙 关闭selinux 相关软件: php-5.4.16 php-mbstring-5.4.16   httpd-2.4.6-45 mariadb-server php-mys

Ubuntu下配置apache开启https

一.HTTPS简述随着网络的日常,信息安全越来越重要,传统的网站都是http协议明文传输,而HTTPS协议是由SSL+HTTP协议构建的可进行加密传输.身份认证的网络协议,比http协议安全. 那https到底是怎么开启的,随着疑问自己也了解https配置原理并在Ubuntu服务器上开启了https. 二.配置证书 配置https一个很重要的步骤就是配置证书. 1.创建证书 sudo apt-get install ssl-cert make-ssl-cert生成证书的方法有两种,一种是根据生成

安装配置Apache支持https和fcgi

Apache安装及配置 1.1 下载软件 1.Apr :(wget http://mirrors.hust.edu.cn/apache//apr/apr-1.5.1.tar.gz) 2.Apr-util :(wget http://mirrors.hust.edu.cn/apache//apr/apr-util-1.5.4.tar.gz) 3.Pcre :(wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.35.t

centos配置apache+subversion

一.软件包 所需软件包: httpd-2.4.12.tar.bz2 subversion-1.8.13.tar.bz2 sqlite-amalgamation-3071501.zip serf-1.2.1.tar.bz2 apr-1.5.2.tar.gz apr-util-1.5.4.tar.gz 注:安装过程中可能提示要安装其他软件包,根据个人系统环境而定. 二.安装和配置步骤: 1.安装apr-1.5.2 # tar –zvxf apr-1.5.2.tar.gz # cd apr-1.5.2

https----------如何在phpstudy环境下配置apache的https访问以及访问http自动跳转成https

1.首先在 httpd.conf里面修改几个地方 找到 #LoadModule ssl_module modules/mod_ssl.so 去掉前面的# Include conf/vhosts.conf  在这一行下面增加一行 Include conf/vhosts_ssl.conf 然后去conf文件夹里面创建vhosts_ssl.conf 2.在vhosts_ssl.conf里面写入 Listen 443 SSLStrictSNIVHostCheck off SSLCipherSuite A

Tools:apache部署https服务

转自:https://www.cnblogs.com/ccccwork/p/6529367.html 1.要搭建https,必须要具备的东西 1.超文本传输协议httpd(apache)和ssl模块(mod_ssl) 2.用于加密超文件传输的证书.(openssl制作自签名证书) 3.测试 2.安装httpd yum install httpd mod_ssl -y 3.安装openssl yum install openssl -y 这里介绍httpd默认的配置文件路径.www路径.默认的证书

CentOS使用nginx部署https服务

nginx安装参考:https://www.cnblogs.com/taiyonghai/p/6728707.html 自签证书生成参考:https://gmd20.github.io/blog/openssl%E7%94%9F%E6%88%90RSA%E5%92%8C%E6%A4%AD%E5%9C%86%E6%9B%B2%E7%BA%BF%E5%8A%A0%E5%AF%86%E5%85%AC%E9%92%A5%E5%AF%86%E9%92%A5%E5%88%9B%E5%BB%BA%E6%A0%