1. 获取SSL证书

根据自己的网站服务器来获取不同的ssl证书,我的服务器是ubuntu20.04。

证书如下:

  1. 00_***.key       ## 私钥文件
  2. 01_CERTIFICATE_***_***.crt    ## 证书文件
  3. 02_INTERMEDIATE_***.crt  证书链文件

将证书上传到你的服务器上,我是在/etc/ssl/目录下新建了一个文件夹。 

 

2. 配置证书

首先,进入/etc/apache2/sites-available目录,如下:

 原先只有000-default.conf和default-ssl.conf两个文件,“.old”结尾的文件用于备用原有配置文件。

做好备份后,我们需要设置一个软链接,把这个文件链接到sites-enabled这个文件夹中,可以使用绝对路径,也可以使用相对路径。我使用的是绝对路径,命令如下:

  1. sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/default-ssl.conf

然后去修改这个文件default-ssl.conf,因为已经做了软链接,所以这时候修改这两个文件夹下的default-ssl.conf都一样。

初始文件内容如下(去除注释):

  1. <IfModule mod_ssl.c>
  2. <VirtualHost _default_:443>
  3. ServerAdmin webmaster@localhost
  4. DocumentRoot /var/www/html
  5. ErrorLog ${APACHE_LOG_DIR}/error.log
  6. CustomLog ${APACHE_LOG_DIR}/access.log combined
  7. SSLEngine on
  8. SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
  9. SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
  10. <FilesMatch "\.(cgi|shtml|phtml|php)$">
  11. SSLOptions +StdEnvVars
  12. </FilesMatch>
  13. <Directory /usr/lib/cgi-bin>
  14. SSLOptions +StdEnvVars
  15. </Directory>
  16. </VirtualHost>
  17. </IfModule>

修改后内容如下(修改的内容后有注释):

  1. <IfModule mod_ssl.c>
  2. <VirtualHost _default_:443>
  3. ServerAdmin ***@***.** ## 你的邮箱,不修改也可以
  4. DocumentRoot /var/www/html/policy ## 你的应用目录
  5. ErrorLog ${APACHE_LOG_DIR}/error.log
  6. CustomLog ${APACHE_LOG_DIR}/access.log combined
  7. SSLEngine on
  8.      ## 下面三行配置证书文件
  9. SSLCertificateFile /etc/ssl/***/01_CERTIFICATE_***_***.crt ## 证书文件,/etc/ssl/***是步骤1中的自定义文件夹
  10. SSLCertificateKeyFile /etc/ssl/***/00_***.key ## 私钥文件
  11.      SSLCertificateChainFile /etc/ssl/***/02_INTERMEDIATE_***.crt   ## 证书链文件, 该行在原始文件中是被注释的

  12. <FilesMatch "\.(cgi|shtml|phtml|php)$">
  13. SSLOptions +StdEnvVars
  14. </FilesMatch>
  15. <Directory /usr/lib/cgi-bin>
  16. SSLOptions +StdEnvVars
  17. </Directory>
  18. </VirtualHost>
  19. </IfModule>

重要的4个参数,作用如下: 

  1. SSLEngine on ## 启用 SSL 功能
  2. SSLCertificateFile ## 证书文件
  3. SSLCertificateKeyFile ## 私钥文件
  4. SSLCertificateChainFile   ## 证书链文件

改好之后,Esc,:wq 保存。

然后加载一下 Apache2 的 SSL 模块:

  1. sudo a2enmod ssl #加载模块
  2. sudo systemctl restart apache2 # 重启服务

这时,在浏览器输入https://你的域名,应该已经可以通过 https 的方式来访问网站了,这时浏览器那里应该也已经有了一个绿色的小锁。

但是如果不主动输入https://的话,直接输入域名,还是会直接跳转到 80 端口的普通的 http 方式访问,所以我们需要强制使用 https 来访问。

 

3. 强制 https 访问

打开/etc/apache2/sites-available/000-default.conf文件,在VirtualHost标签内添加如下三行:

  1. RewriteEngine on
  2. RewriteCond %{HTTPS} !=on
  3. RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]

然后保存,然后启动 Apache2 的重定向:

  1. sudo a2enmod rewrite

然后再重启 Apache2,至此大功告成:

  1. sudo systemctl restart apache2 

刷新一下网页,输入域名,就会直接跳转HTTPS访问。

 

版权声明:本文为si-yuan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/si-yuan/p/15188480.html