{{item}}
{{item.title}}
{{items.productName}}
{{items.price}}/年
{{item.title}}
部警SSL证书可实现网站HTTPS加密保护及身份的可信认证,防止传输数据的泄露或算改,提高网站可信度和品牌形象,利于SEO排名,为企业带来更多访问量,这也是网络安全法及PCI合规性的必备要求
前往SSL证书为保障数据在传输过程中的安全,在AWS EC2上部署SSL证书是关键举措。接下来,我将详细介绍在AWS EC2上部署SSL证书的完整流程。
AWS提供了多种SSL证书选项,主要包括:
1. ACM证书:这是一项由AWS提供的服务,可帮助轻松预置、管理和部署公有和私有安全套接字层 / 传输层安全性 (SSL/TLS) 证书。
(1)公有证书:如果网站面向公众开放,可申请公有证书。在ACM控制台中,可免费申请用于ACM集成服务(如 Elastic Load Balancing、API Gateway 等)的公有证书。但需注意,通常情况下,默认申请的公有证书无法直接导出用于普通EC2实例(不过,近期ACM推出了可导出的公共 SSL/TLS 证书,申请时需特别选择 “启用导出”)。若要使用可导出的公共证书,申请流程如下:
(2)私有证书:私有证书用于识别和保护私有网络(例如服务器、移动和物联网设备,以及应用程序)上的关联资源之间的通信。使用ACM私有CA,可按月支付创建的服务和证书的费用,创建的私有证书越多,每个证书支付的费用越少。
2. 第三方证书:例如Let's Encrypt提供的免费SSL证书,适用于有全站SSL需求的情况。其优点是免费且支持自动续签,配合Nginx等Web服务器可自动配置。缺点是证书无法自动续签(部分配置可实现自动续签),需手动操作以保持证书不过期。
1. 确保EC2实例安全组设置正确:要使SSL证书生效,需确保实例的安全组允许HTTPS(端口 443)流量进入。在AWS控制台中,找到对应的EC2实例,进入其安全组设置页面,添加一条入站规则,允许来自互联网(0.0.0.0/0)或特定来源的TCP流量通过 443 端口。同时,若网站也支持HTTP访问,也需确保端口 80 开放。
2. 确定使用的Web服务器:常见的Web服务器有Apache和Nginx等。不同的Web服务器,SSL证书的配置方式略有不同。本文将分别介绍在这两种服务器上部署SSL证书的方法。
(1)安装Apache和OpenSSL:如果尚未安装,在EC2实例的终端中运行以下命令安装Apache和OpenSSL(假设使用的是基于Debian或Ubuntu的系统):
1 sudo apt-get install apache2 openssl -y
(2)生成自签名证书:
1 sudo openssl req -nodes -newkey rsa:2048 -keyout /etc/ssl/private/private.key -out /etc/ssl/private/request.csr
1 sudo openssl x509 -in /etc/ssl/private/request.csr -out /etc/ssl/private/certificate.crt -req -signkey /etc/ssl/private/private.key -days 365
此时,private.key和certificate.crt文件已准备好用于 ApacheWeb服务器。
(3)配置Apache使用SSL:
1 sudo vi /etc/apache2/sites-available/default-ssl.conf
1 SSLCertificateFile /etc/ssl/private/certificate.crt
2 SSLCertificateKeyFile /etc/ssl/private/private.key
1 sudo a2ensite default-ssl.conf
1 sudo vi /etc/apache2/sites-available/000-default.conf
1 Redirect "/" "https://server-ip"
1 sudo a2enmod ssl
2 sudo a2enmod headers
1 sudo systemctl reload apache2
(4)验证SSL服务器:在浏览器中输入https://server-ip,由于是自签名证书,会跳转到一个警告页面,这是正常现象。选择继续访问,应能看到Apache的主页,此时地址栏会显示锁形图标,但可能提示 “不安全”,这是因为证书未被受信任的证书颁发机构签名。
(1)安装Nginx:在EC2实例的终端中运行以下命令安装Nginx(假设使用的是基于Debian或Ubuntu的系统):
1 sudo apt-get installNginx-y
(2)为Nginx设置服务器块:根据网站的具体需求,在Nginx配置目录(通常为/etc/nginx/conf.d/)中创建或编辑服务器块配置文件,例如example.com.conf,设置服务器名称、根目录、索引文件等基本信息。
(3)安装Certbot:Certbot是一个用于获取和管理Let's Encrypt证书的工具。由于Amazon Linux 2023系统的软件库中可能没有snapd,这里采用pip安装方式(其他系统可根据官方指示选择合适的安装方式)。
1 sudo dnf install python3 augeas-libs
1 sudo python3 -m venv /opt/certbot/
2 sudo /opt/certbot/bin/pip install --upgrade pip
1 sudo /opt/certbot/bin/pip installCertbotcertbot-nginx
1 sudo ln -s /opt/certbot/bin/Certbot/usr/bin/certbot
(4)运行Certbot获取证书并配置Nginx:运行以下命令获取证书并让Certbot自动编辑Nginx配置以启用HTTPS访问(假设域名为example.com):
1 sudoCertbot--Nginx-d example.com --email your_email@example.com --agree-tos --redirect
其中,--nginx参数让Certbot自动修改Nginx配置,--redirect参数自动将HTTP跳转到HTTPS。执行成功后,证书保存于/etc/letsencrypt/live/example.com/目录下。
(5)验证配置:完成上述操作后,在浏览器中访问https://example.com,应能正常访问网站,且地址栏显示安全锁标志,表示SSL证书已正确部署。
(6)自动续签证书:为确保证书持续有效,可设置自动续签。运行以下命令添加自动续签任务(以每天凌晨 0 点和 12 点为例):
1 echo "0 0,12 * * * root /opt/certbot/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && sudoCertbotrenew -q" | sudo tee -a /etc/crontab > /dev/null
该命令会在每天的 0 点和 12 点,随机延迟一段时间后执行Certbotrenew -q命令,静默更新证书。
1. 证书安全:无论使用哪种证书,都要妥善保管证书的私钥。对于可导出的ACM证书,导出后应使用安全存储和访问控制措施来保护私钥。对于第三方证书,如Let's Encrypt证书,其私钥也需妥善保管,避免泄露。
2. 证书续订:对于ACM证书,用于集成服务(如 Elastic Load Balancing 和API Gateway)的证书,ACM会自动续订并部署。对于可导出的公共证书,可通过Amazon EventBridge配置自动续订事件,也可按需续订,续订证书将收取新证书签发的费用。对于第三方证书,如Let's Encrypt证书,可通过设置自动续签任务(如上述Nginx配置中的方式)确保证书不过期。
3. 多实例和负载均衡场景:如果有多个EC2实例并使用负载均衡器,如 Elastic Load Balancing,可将SSL证书部署在负载均衡器上,然后将EC2实例注册到负载均衡器的后端。在ACM中申请证书后,按照相应的负载均衡器类型(如应用程序负载均衡器、网络负载均衡器、经典负载均衡器)的配置指南,将证书与负载均衡器关联,并将EC2实例置于负载均衡器之后,由负载均衡器负责SSL终止和流量分发。
通过以上步骤,可在AWS EC2上成功部署SSL证书,为网站或应用程序提供安全的通信保障。在实际操作中,务必根据具体的业务需求、服务器环境和安全要求进行细致的配置和调整。
Dogssl.cn拥有20年网络安全服务经验,提供构涵盖国际CA机构Sectigo、Digicert、GeoTrust、GlobalSign,以及国内CA机构CFCA、沃通、vTrus、上海CA等数十个SSL证书品牌。全程技术支持及免费部署服务,如您有SSL证书需求,欢迎联系!