SSL免费证书的申请越来越容易了,于是在腾讯云上申请了个免费DV SSL证书,准备转移到腾讯cdn开启ssl访问(百度云加速免费用户虽然不限流量,但是不支持ssl)。以下是具体过程记录,谨做笔记。
登录https://buy.cloud.tencent.com/ssl,选择DV免费型证书,按提醒步骤一步一步申请,不再赘述。资料提交完成后会提醒正在审核,审核结束之后会有下载链接。
将下载到的以你的域名命名的压缩包解压,apache文件夹内的证书就是适用于apache2证书文件。其中1_root_bundle.crt是证书链文件,2_*.crt是证书文件,3_*.key是证书key文件。
用winscp或ftp工具打开你的服务器,在/etc/apache2文件夹内创建ssl_crt文件夹(或者在其他位置),将这三个文件上传。
打开sites-available文件夹,复制default-ssl.conf,重命名为 your_domain_ssl.conf。打开这个文件夹。将<VirtualHost _default_:443>改为<VirtualHost *:443>,在这一行下添加ServerName: 你的域名,修改DocumentRoot指向你的网站根目录。
- 修改SSLCertificateFile指向你的证书文件,即2_*.crt文件。
- 修改SSLCertificateKeyFile指向你的证书key文件,即3_*.key文件
- 修改SSLCertificateChainFile指向你的证书链文件,即1_*.key文件
保存文件。并在sites-enabled文件夹建立该文件的软连接,使用命令 sudo /etc/init.d/apache2 restart,如果没有报错则启用ssl完成。我这里产生了个报错,apache2重启失败。如下图
SSLSessionCache: ‘shcmb’ session cache not supported. 就是ssl session缓存模块shcmb不支持。
打开mods-available文件夹查看有无socache_shmcb.load文件,如果有,在mods-enabled文件夹建立该文件软连接启用该模块,重启apache2即可。
添加上述配置,保存后,给配置文件建立一个软连接,命令如下:
sudo a2ensite default-ssl
另:
怎么给网站开启https协议?Apache2下SSL证书安装配置方法
本文原创,未经允许,严禁装载
刚做本站的时候,我也不知道为什么要开启https协议,只是发现有很多网站都是https。当用Chrome浏览器打开本社区网站的时候,发现现实”不安全”,这对于有强迫症的我来说,是不能忍的,于是申请了免费的证书,花了一个多小时才搞定。开启https协议本身不难,但是内容很繁琐。
https具有加密传输通道,有效保障隐私数据密文传输,截取也无法解密。HTTP明文传输,没有SSL加密通道,任何人都可以轻松截取或篡改机密数据。
好了废话不多说,首先,需要申请证书,我用的是亚洲诚信(https://www.trustasia.com/)的免费证书,至于证书申请流程可以看看这里:https://www.trustasia.com/doc/how-to-get-digital-certificates,如果你已经拥有了证书,请跳过这一步。
有与本站用的是apache2,apache2服务器需要用到for Apache.zip的文件以及自主生成的私钥.key文件(申请证书过程中创建CSR时生成),具体文件见下图:
将SSL证书上传至apache2的目录下,记录一下证书的绝对地址,方便等下使用。
上传好之后,我们需要为apache服务器添加ssl模块支持,命令如下:
sudo a2enmod ssl
然后进入apache2的配置文件目录/etc/apache2/sites-available,找到对应的配置
文件,默认为default-ssl.conf(根据实际环境),找到VirtualHost *:443的配置,并参考如下配置(修改或增加):
<VirtualHost *:443>
DocumentRoot 网站根目录
SSLEngine on
SSLCertificateFile /etc/ssl/certs/frostless.net.crt
SSLCertificateKeyFile /etc/ssl/private/frostless.net.key
SSLCertificateChainFile /etc/ssl/certs/root_bundle.crt
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!aNULL:!eNULL
SSLHonorCipherOrder on
</VirtualHost>
添加上述配置,保存后,给配置文件建立一个软连接,命令如下:
sudo a2ensite default-ssl
进入apache2的配置文件目录,找到ports.conf,添加Listen 443,如果默认已添加,忽略此步骤。
检测SSL配置
上述的配置完成后,可先用命令检测配置是否正确,若不正确,请不要重启apache2!检测命令如下:
/usr/sbin/apache2ctl -t
输入命令后,若提示Syntax OK,则表示配置正常(如果提示错误,请根据具体错误修改,直到提示Syntax OK),可以重启apache2,命令如下:
sudo service apache2 restart
打开浏览器,输入https://你的域名,如浏览器地址栏显示加密小锁,则表示证书配置成功。若显示无法连接,请确保防火墙或安全组等策略有放行443端口(SSL配置端口)。
http重定向到https(可选)
若可以成功访问https,那么我们再执行最后一步,强制用户即使输入http,也跳转到https上来,操作很简单,添加下列三行代码即可。修改默认网站配置 /etc/apache2/site-avaliable/000-default.conf
<VirtualHost *:80>
...
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
...
</VirtualHost>
保存后执行以下命令,
sudo a2enmod rewrite
然后再次重启一下apache服务器:
sudo service apache2 restart
好了,大功告成,大家加油!
欢迎关注我的博客,原文地址:
https://www.frostless.net/index.php/2020/10/29/apache2-ssl/
apache2.2.4如何安装SSL证书与问题解答
1、开启apache ssl模块
将#LoadModule ssl_module modules/mod_ssl.so前面的“#”去掉,来开启apache的ssl模块;
注意:
由于许多apache版本是不包括ssl模块的,如果环境下不包括mod_ssl.so,则需要下载包括mod_ssl.so版本的apache,并将该模块放在模块目录下面。
windows下apache版本下载地址为:https://archive.apache.org/dist/httpd/binaries/win32/;
apache安装配置:http://www.sjzphp.com/webdis/apache_844.html
apache中linux版本-https://archive.apache.org/dist/httpd/
另外:有时php需要开发openssl模块:
将#extension=php_openssl.dll前面的“#”去掉,如果当前版本没有该模块,需要下载。
2、下载证书
下载证书并将证书放在服务器上,这里我们以apache所在目录为例。将证书放在如下目录:apache/cert/xxx/。目录形式不唯一,可以自行定义。必须与下面apache虚拟主机中的证书路径一致即可。
3、给apache虚拟主机安装SSL证书
如果购买的SSL证书是单域名版本的,只需要给相应的虚拟主机安装即可以,需要有服务器操作权限,如果购买的是多域名版本,可以给服务器上所有的网站安装SSL证书。apache虚拟主机安装SSL证书配置如下:
<VirtualHost *:443>
ServerAdmin admin@myhost.com
#根据需要配置为实际的域名
ServerName www.xxx.com
ServerAlias xxx.com
Header set Access-Control-Allow-Origin *
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLCertificateFile cert/xxx/2787247_www.xxx.com_public.crt
SSLCertificateKeyFile cert/xxx/2787247_www.xxx.com.key
SSLCACertificateFile cert/xxx/2787247_www.xxx.com_chain.crt
#以上三条规划中的证书名称需要替换为实际中的证书名称
DocumentRoot “D:DedeAMPZWebRootqqcms”
php_admin_value open_basedir “D:DedeAMPZWebRootqqcms”
</VirtualHost>
##VhostEnd
4、给服务器上所有的网站安装SSL证书
打开Apache/conf/extra/httpd-ssl.conf,在httpd-ssl.conf文件中找到以下参数并进行配置。
SSLProtocol all -SSLv2 -SSLv3 # 添加SSL协议支持协议,去掉不安全的协议。
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM # 使用此加密套件。
SSLHonorCipherOrder on
SSLCertificateFile cert/domain name_public.crt # 将domain name_public.crt替换成您证书文件名。
SSLCertificateKeyFile cert/domain name.key # 将domain name.key替换成您证书的秘钥文件名。
SSLCertificateChainFile cert/domain name_chain.crt # 将domain name_chain.crt替换成您证书的秘钥文件名;
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1
5、一些厂商SSL证书安装指南汇总
A-阿里云SSL证书安装指南:https://help.aliyun.com/document_detail/98727.html
B-腾讯云SSL证书安装:https://cloud.tencent.com/product/ssl
以上就是青锋建站给大家分享的apache2.2.4如何安装SSL证书与问题解答、apache2.2.4如何安装SSL证书步骤。青锋建站,提供专业的高品质网站制作服务,包括网站建设,SEO,网络营销,PHP开发,网站建设知名品牌,全国接单,为企业构建强有力的营销平台。