Ubuntu20-apache2配置ssl证书
最近再搭建自己的博客,想要配置
https
。因此在阿里云申请了免费的证书,将给的apache2
证书下载下来。
证书的文件如下:
证书如下:
domain_xxxx.key ## 私钥文件
domain_xxxx_public.crt ## 证书文件
domain_xxxx_chain.crt 证书链文件
将证书上传放在服务器的目录下:
/etc/apache2/cert
cert是我自己创建的目录,也可以自己创建
在目录/etc/apache2/sites-available
下会有两个文件
000-default.conf
default-ssl.conf
配置default-ssl.conf
就好了
先备份一份,防止出错是可以恢复
cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/default-ssl.conf.old
在将这个文件软连接到sites-enables
目录下,绝对路径和相对路径都可以
ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/default-ssl.conf
修改default-ssl.conf
文件,做了软连接,修改sites-available
或者sites-enabled
都可以
#源文件的注释被我删了
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
#这里三个要修改的地方分别对应证书当中的三个文件
SSLCertificateFile /etc/apache2/cert/domain_xxxxx_public.crt
SSLCertificateKeyFile /etc/apache2/cert/domain_xxxx.key
SSLCertificateChainFile /etc/apache2/cert/domain_xxxx_chain.crt #这个文件之前是被注释的,删除#后修改
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
在加载apache2
的ssl
模块
a2enmod ssl #加载ssl模块,成功后在mods-enabled目录下有几个文件被添加进来了
#输出如下
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Enabling module socache_shmcb.
Enabling module ssl.
重启apache2
服务
service apache2 restart
重启之后,使用https
就可以访问了。
但是现在如果访问80
端口的话,还是以http
方式访问。因此现在还需要配置一下强制跳转到https
修改/etc/apache2/sites-available/000-default.conf
文件,添加下面三行
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]
启动apache2
的重定向模块
a2enmod rewrite
重启apache2
服务
service apache2 restart
就可以自动跳转了
参考链接:https://cdmana.com/2021/08/20210826112331095i.html
然后记录一下配置过程中所遇到的问题
docker容器修改映射的端口
由于使用docker
搭建的环境,所以一开始只映射了80端口,没有映射443端口。
先将容器停止运行:xxxx
为容器id
docker stop xxxxx
修改配置文件如下:xxxx
为容器id
修改目录/var/lib/docker/containers/xxxxxx
下config.v2.json、hostconfig.json
文件
hostconfig.json
:
#在PortBindings字段中添加映射的端口
"PortBindings":{"443/tcp":[{"HostIp":"","HostPort":"443"}],"80/tcp":[{"HostIp":"","HostPort":"80"}]}
config.v2.json
:
#在ExposedPorts字段中添加暴露的端口
"ExposedPorts":{"443/tcp":{},"80/tcp":{}}
然后启动容器即可:
docker start xxxxx
docker容器配置错误导致无法启动
还有就是在配置ssl
的过程中,由于配置错误。就会导致容器无法启动,然后使用exec
也进不去容器了。说一下我的解决办法。
docker inspect xxx
找到下面的信息
"MergedDir": "/var/lib/docker/overlay2/51767094b8a5136377b27a8730aa57a661d614ef7b4c182be2617da0cd3699e3/merged",
"UpperDir": "/var/lib/docker/overlay2/51767094b8a5136377b27a8730aa57a661d614ef7b4c182be2617da0cd3699e3/diff",
"WorkDir": "/var/lib/docker/overlay2/51767094b8a5136377b27a8730aa57a661d614ef7b4c182be2617da0cd3699e3/work"
切换到merged
目录,这下面是容器的一些文件,当然diff
目录也可以看一下
这几个文件是什么可参考链接:https://www.cnblogs.com/lhanghang/p/13556629.html
cd /var/lib/docker/overlay2/51767094b8a5136377b27a8730aa57a661d614ef7b4c182be2617da0cd3699e3/merged
#bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
然后修改配置错误的文件,在重启容器就好了。
查看日志信息,查找报错的信息
docker logs -n 10 xxxxx
Comments | NOTHING