树莓派/Debian“无法定位软件包mod_ssl”问题解决方案
一、前言
对于使用 OpenSSL 来加载第三方 SSL 证书来实现 HTTPS 安全连接实现的方法来说,CentOS、Ubuntu 等与 Debian 的实现方法并不一样。
对 CentOS、Ubuntu 等 Linux 发行版来说,使用 OpenSSL 来加载第三方 SSL 证书来实现 HTTPS 安全连接,可以参考 ownCloud 社区的文档:
Configure Apache with Let’s Encrypt
问题描述:
yogile@debyogile:~$ SSLOpenSSLConfCmd DHParameters /etc/apache2/dh4096.pem sudo: SSLOpenSSLConfCmd:找不到命令
或
yogile@debyogile:~$ sudo apt install mod_ssl 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 E: 无法定位软件包 mod_ssl
二、问题回答
如前言所述:对于使用 OpenSSL 来加载第三方 SSL 证书来实现 HTTPS 安全连接实现的方法来说,CentOS、Ubuntu 等与 Debian 的实现方法并不一样,也在于对于 Apache 模块的管理两方不一样。
在 CentOS、Ubuntu 等之中,SSLOpenSSLConfCmd 命令依赖于 Apache 的模块 mod_ssl 。
但是对于 Apache 模块,管理其模块是通过 yum 实现的,而不是 Debian 的 apt 。
三、解决方案
通过以下命令加载 ssl 模块:
sudo a2enmod ssl
再通过重启 Apache 启用 ssl 模块:
sudo /etc/init.d/apache2 restart 或 sudo service apache2 restart
Debian 下 Apache 其实已经准备好了类似 mod_ssl 的模块:ssl 。
在 /etc/apache2/mods-available/ 文件夹下,有着非常多的 Apache 模块,只是没有加载启用。而已经启用的模块软链接到 /etc/apache2/mods-enabled/ 文件夹下。
这时,输入 ls /etc/apache2/mods-enabled/ 就可以看到 ssl 模块被加载:
yogile@debyogile~$ ls /etc/apache2/mods-enabled access_compat.load autoindex.conf mime.load setenvif.conf alias.conf autoindex.load mpm_prefork.conf setenvif.load alias.load deflate.conf mpm_prefork.load socache_shmcb.load auth_basic.load deflate.load negotiation.conf ssl.conf authn_core.load dir.conf negotiation.load ssl.load authn_file.load dir.load php7.3.conf status.conf authz_core.load env.load php7.3.load status.load authz_host.load filter.load reqtimeout.conf authz_user.load mime.conf reqtimeout.load