起因
最早的起源应该可以追溯到rocket.chat
搬家失败,然后又一直搞不明白caddy
的端口用法,于是我开始研究apache2
,从网站的搭建到启用ssl
的https
协议,踩得坑实在太多,于是有了这篇文章,算是做个备忘录吧~
安装本体
apt update
apt upgrade
apt install apache2
开启https/ssl
手动证书
#在etc/apache2/ssl建立文件夹,将证书复制进去,启用几个模块
sudo a2enmod ssl
sudo a2enmod proxy_http
sudo a2enmod proxy
sudo a2enmod proxy_wstunnel
sudo a2enmod rewrite
#修改 /etc/apache2/sites-available/default-ssl.conf中以下部分
<IfModules mod_ssl.c>
<VirtualHost *:443>
ServerName #修改为证书绑定的域名www.YourDomainName.com。
SSLCertificateFile /etc/apache2/ssl/www.YourDomainName_public.crt #将/etc/apache2/ssl/www.YourDomainName.com_public.crt替换为证书文件路径+证书文件名。
SSLCertificateKeyFile /etc/ssl/apache2/www.YourDomainName.com.key #将/etc/apache2/ssl/www.YourDomainName.com.key替换为证书密钥文件路径+证书密钥文件名。
SSLCertificateChainFile /etc/apache2/ssl/www.YourDomainName.com_chain.crt #将/etc/apache2/ssl/www.YourDomainName.com_chain.crt替换为证书链文件路径+证书链文件名。
#建立软链
sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/001-ssl.conf
#重新加载apache2配置文件
sudo /etc/init.d/apache2 force-reload
#重启Apache 2服务
service apache2 restart
自动证书并延期(2020.10.21更新)
#添加cerbot最新源 sudo add-apt-repository ppa:certbot/certbot #升级系统 sudo apt update #安装cerbot sudo apt install python-certbot-apache #重启apache2 sudo service apache2 restart #向Let's Encrypt申请证书,按提示操作 sudo certbot --apache -d 你的域名1 -d 你的域名2 #访问https://你的域名,查看是否已配置小绿锁 #配置自动延期(默认只有30天) crontab -e 0 */12 * * * sudo certbot renew --force-renewal //每天申请延期两次 #花几天测试下是否能正常延期,搞定!
——2020-02-29更新验证登录——
开启账号密码验证登录(非必须)
创建账密及权限配置方面参考这篇即可
改写Apache的配置文件
在/etc/apache2/sites-available/default-ssl.conf
中加入以下代码:
<VirtualHost _default_:443> //如果要使用其他端口,可以修改,不过别忘了在ports.conf也添加监听
ServerAdmin webmaster@localhost
ServerName xxx.com //自己的域名
DocumentRoot /var/www/html/ //按需修改
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/xxx.crt //主证书
SSLCertificateKeyFile /etc/apache2/ssl/xxx.key //密钥证书
SSLCertificateChainFile /etc/apache2/ssl/xxx.crt //中间证书
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
<Location /xxx> //要加密的路径
Authtype Basic
AuthName "Please enter the secret key" //自定义弹框显示内容
AuthUserFile /etc/apache2/pass.wd //调用上述的密码文件
Require valid-user
</Location>
</VirtualHost>
重启Apache 2服务
service apache2 restart
发表回复