前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CentOS7+Apache使用SSL配置HTTPS 服务

CentOS7+Apache使用SSL配置HTTPS 服务

作者头像
Yiiven
发布2022-12-15 15:22:55
1.6K0
发布2022-12-15 15:22:55
举报
文章被收录于专栏:怡文菌怡文菌

1.使用XSell连接服务器

这个网络上有教程,而且非常简单,我这里就不记录了。

2.安装mod_ssl模块

首先,检查是否已安装SSL模块

代码语言:javascript
复制
[root@centos ~]# rpm -qa | grep mod_ssl

如果发现什么都没显示说明没有安装,没有mod_ssl模块,Apache无法提供SSL服务。

使用yum在线安装。

代码语言:javascript
复制
[root@centos ~]# yum install mod_ssl openssl

当你看到提示问yes/no的时候,请选择yes允许安装

看到 Complete! 就安装完成了

安装成功后再次检查安装信息,会显示版本信息:

代码语言:javascript
复制
[root@centos ~]# rpm -qa | grep mod_ssl
mod_ssl-2.4.6-89.el7.centos.x86_64

3.下载和上传证书

我这边采用的是阿里云的DV SSL证书(如果要使用自签名的证书,请移步到文章底部备注部分),从阿里云下载的证书解压后一共有三个文件分别是

xxxx_xxxx.key

xxxx_xxxx_xxx_chain.crt

xxxx_xxxx_xxx_public.crt

DV、EV、OV三种类型证书的区别

数字证书

DV SSL

OV SSL

EV SSL

用户建议

个人

组织、企业

大型企业、金融机构

公信等级

一般

认证强度

网站真实性

组织及企业真实性

严格认证

安全性

一般

可信度

常规

高(地址栏绿色)

然后在Apache的安装目录下创建一个目录cert(将上面的三个文件都放在一起方便管理和维护)

代码语言:javascript
复制
[root@centos ~]# mkdir /etc/httpd/cert
[root@centos ~]# cd /etc/httpd/cert

使用Xshell上传文件可点击工具栏的新建文件传输按钮,弹出框后点击取消会跳转到另一个标签页,此时可将三个文件直接拖拽到黑窗口进行上传。

代码语言:javascript
复制
sftp:/etc/httpd/cert> 
Uploading yourname.key to remote:/etc/httpd/cert/yourname.key
sftp: sent 1.63 KB in 0.11 seconds
Uploading public.crt to remote:/etc/httpd/cert/public.crt
sftp: sent 1.92 KB in 0.13 seconds
Uploading chain.crt to remote:/etc/httpd/cert/chain.crt
sftp: sent 1.63 KB in 0.12 seconds

4.配置SSL

a.编辑ssl.conf

注:也可能是/etc/httpd/conf/extra/httpd-ssl.conf文件,与操作系统及安装方式有关

检查端口443及前面是否有#号,LoadModule是指支持HTTP所需要的模块,如果没有LoadModule,可手动添加一行LoadModule ssl_module modules/mod_ssl.so

代码语言:javascript
复制
[root@centos ~]# vim /etc/httpd/conf.d/ssl.conf
# 添加SSL支持模块
LoadModule ssl_module modules/mod_ssl.so 
# http ssl默认端口为443,如果有#号需删除才可以使用
Listen 443 https

b.修改响应的证书信息

(注意:配置文件中这些内容并不是连续的,中间有很多注释,如果你有时间,可以仔细阅读这些注释)

代码语言:javascript
复制
# 添加 SSL 协议支持协议,去掉不安全的协议
SSLProtocol all -SSLv2 -SSLv3
# 修改加密套件如下
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
# 证书公钥配置,你的对应证书文件路径
SSLCertificateFile /etc/httpd/cert/public.crt
# 证书私钥配置,你的对应证书文件路径(将文件名改成你自己的)
SSLCertificateKeyFile /etc/httpd/cert/yourname.key
# 证书链配置,你的对应证书文件路径,如果该属性开头有 '#'字符,请删除掉
SSLCertificateChainFile /etc/httpd/cert/chain.crt

c.修改完毕之后保存并退出

5.配置防火墙

SSL服务必须在防火墙配置中开启443端口,HTTPS才可以对外连接。

代码语言:javascript
复制
[root@centos ~]# vim /etc/sysconfig/iptables
# 开启443端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT

编辑完毕退出并保存,然后重启防火墙服务

代码语言:javascript
复制
[root@centos ~]# service iptables restart

这里需要注意一点:如果你使用的是云服务器,并且在iptables里开放了443端口,依然无法通过443端口访问你的服务器的话,请尝试在云服务器提供商提供的控制台中修改安全组策略。

6.配置调整虚拟主机vhosts

代码语言:javascript
复制
[root@centos ~]# vim /etc/httpd/conf/vhosts.conf
# 这是我们之前典型的HTTP配置
<VirtualHost *:80>
    DocumentRoot "/var/www/example"
    ServerName example.com
    ServerAlias
    <Directory "/var/www/example">
        Options FollowSymLinks ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
        Require all granted
    </Directory>
</VirtualHost>

# 这是新增的HTTPS的配置
<VirtualHost *:443>
    DocumentRoot "/var/www/example"
    ServerName example.com
    ServerAlias
    <Directory "/var/www/example">
        Options FollowSymLinks ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
        Require all granted
    </Directory>
    # 开启SSLEngine及设置使用的证书,端口443
    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/public.crt
    SSLCertificateKeyFile /etc/pki/tls/private/yourname.key
</VirtualHost>

技巧:这里我们可以开启vim的行号,使用区域复制来快速编辑

代码语言:javascript
复制
# 进入vim之后执行以下命令显示行号
:set number
# 另外记录以下隐藏行号
:set nonumber
# vim区域复制,示例为拷贝30-41行到43行,如果43行有内容,会自动下移(并不会被覆盖)
:30,41 copy 43

注:如果您的服务器上不只一个站点,需要对要建立安全连接的所有站点进行对应的设置

7.重启Apache服务

一切配置完成后,必须重新启动Apache服务,配置才会生效。

代码语言:javascript
复制
[root@centos ~]# service httpd restart

8.测试

在浏览器中输入 https://example.com

a.如果出现和 http:// 访问效果一样的情况,说明配置成功

b.如果出现 建立安全连接失败,SSL接收到一个超出最大准许长度的记录。(错误码:SSL_ERROR_RX_RECORD_TOO_LONG)说明配置有误

解决方案:检查证书路径是否正确;检查ssl.conf配置是否正确;检查vhost.conf配置是否正确;检查证书是否过期。

9.强制web服务始终使用https

如果您需要站点只使用HTTPS,此时就需要将所有HTTP请求(端口80)重定向到HTTPS(端口443)。 Apache可以容易地做到。

a.强制主站所有web使用(全局)

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

代码语言:javascript
复制
[root@centos ~]# vim /etc/httpd/conf/httpd.conf
ServerName www.example.com:80
Redirect permanent / https://www.example.com

b.强制虚拟主机(单个站点)

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

代码语言:javascript
复制
[root@centos ~]# vim /etc/httpd/conf/vhosts.conf
<VirtualHost *:80>
ServerName www.example.com
# 增加这一条即可
Redirect permanent / https://www.example.com/
    <Directory>
        ...
        ...
    </Directory>
</VirtualHost>

说明:证书可以通过各种方式获得,如:自签名、社区提供、以及商业机构购买。

管理员应当谨慎选择将要使用的证书的类型。

备注自签名证书生成方法:

参考一,CentOS:

代码语言:javascript
复制
# 首先,生成长度为2048bits的私钥
[root@centos ~]# openssl genrsa -out yourname.key 2048
# 然后,生成证书签名请求(CSR),这里需要填写许多信息,如国家,省市,公司等
[root@centos ~]# openssl req -new -key server.key -out server.crt
# 最后,生成类型为X509的自签名证书。有效期设置3650天,即有效期为10年
[root@centos ~]# openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

参考二,Ubuntu:

代码语言:javascript
复制
root@ubuntu:/etc/ssl/private# sudo openssl req -new -x509 -days 365 -sha1 -newkey rsa:1024 -nodes -keyout demo.key -out demo.crt

参数说明:

-x509 显示证书和签名工具

-days 证书的有效期

-sha1 证书加密算法

-newkey rsa:1024 创建一个新key,1024表示公钥长度为1024bits

需要填写的项目:

国家

Country Name (2 letter code) AU: CN

省份

State or Province Name (full name) Some-State:SC

城市

Locality Name (eg, city) []:CD

公司名称

Organization Name (eg, company) Internet Widgits Pty Ltd:your_company_name.Ltd

组织单位名称

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

域名

Common Name (eg, YOUR name) []: example.com

电子邮件地址

Email Address []:example@gmail.com

命令执行完会创建demo.key与demo.crt

参考文章:

如何配置云服务器 CentOS 7.0 系统 Apache HTTPS 服务

Apache 使用ssl模块配置HTTPS

Apache 搭建HTTPS Virtual Host

更多参数说明可以参考:http://www.openssl.org/docs/apps/openssl.html

本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:

原文出处:Yiiven https://cloud.tencent.com/developer/article/2193273

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-06-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.使用XSell连接服务器
  • 2.安装mod_ssl模块
  • 3.下载和上传证书
  • 4.配置SSL
  • 5.配置防火墙
  • 6.配置调整虚拟主机vhosts
  • 7.重启Apache服务
  • 8.测试
  • 9.强制web服务始终使用https
  • 备注自签名证书生成方法:
  • 参数说明:
  • -x509 显示证书和签名工具
  • -days 证书的有效期
  • -sha1 证书加密算法
  • -newkey rsa:1024 创建一个新key,1024表示公钥长度为1024bits
  • 需要填写的项目:
  • 国家
  • 省份
  • 城市
  • 公司名称
  • 组织单位名称
  • 域名
  • 电子邮件地址
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档