标签归档:Apache

在 Ubuntu 20.04 LTS 上安装 SSL 证书

今天抽时间给自己的几个网站加上了 SSL 证书,SSL 证书是从腾讯云上申请的免费 SSL 证书,有效期为一年,从申请到配置比较顺利。

申请&下载

登录到腾讯云[1]上,搜索产品 SSL,找到 SSL 证书产品[2],进入该产品首页,也就是你的 SSL 证书概览,在这里左边是导航菜单,中间的内容区会显示证书申请状态和监控状态等概览信息,右边则是一些帮助信息,如下图所示。

在左边导航菜单中选择「我的证书」,会显示当前你申请的所有的证书,在中间功能按钮区选择「申请免费证书」按钮,如下图中红色箭头所指的按钮,即可开始进行免费证书的申请。

首先在弹出的页面上选择证书类型,免费版的目前只有一个,可以看到有效期只有一年,直接确定就行。

接下来是第一步提交材料,需要填写一些信息,要提交的资料主要是证书要绑定的域名以及申请邮箱,填写对应的信息即可,然后进入第二步「选择验证方式」。

第二步选择验证方式主要是验证你之前填写的绑定证书的域名是你的,使用推荐的「DNS验证」即可,选择下一步按钮进入第三步「验证域名」。

第三步验证域名需要你在你的域名中添加一条解析记录,在你的域名托管平台中找到你要绑定证书的域名,然后在域名解析中添加一条 CNAME 的解析记录,在解析记录中对应填写下图中的「主机记录」和「记录值」,解析记录添加完毕后,选择「查看域名验证状态」看看是否完成验证,如果完成验证,剩下就是等待证书的签发,基本上不到 1 分钟就能拿到发放的证书了。

这时候通过左边导航菜单回到「我的证书」菜单,如果上面操作无误,就能看到自己的证书了,在「我的证书」中签发下来的证书上选择「下载」,弹出如下图所示的页面。证书下来后我们需要安装到服务器上,所以我们可以先按照我们的服务器类型把证书下载下来,到这里我们的证书就已经申请完毕了,剩下的就是把下载的证书安装到服务器上。

上传&安装

我的服务器系统是 Ubuntu 20.04 ,Web 服务器软件使用的是 Apache ,所以在下载证书的时候选择服务器类型为 Apache 类型的下载,下载后解压缩,有四个文件,我们以申请证书的域名是 example.com 举例来说(在实际使用时将域名替换为自己到域名即可),那这四个文件分别是:

  • root_bundle.crt 证书文件
  • example.com.crt 证书文件
  • example.com.key 私钥文件
  • example.com.csr 系统在线生产文件,这个安装的时候不用

将证书文件和私钥文件拷贝到服务器上一个目录中,我是拷贝到了 /etc/apache2/ssl/example.com/ 这个目录下面,可以使用 scp 命令进行拷贝,也可以使用 scp 工具拷贝。

拷贝完成后,用 SSH 远程登录服务器,在虚拟主机配置文件中添加证书信息,比如在 /etc/apache2/sites-available 目录中,找到要配置 SSL 站点的配置文件,例如:example.com ,则对应到该目录下的 example.com.conf 文件,将配置信息修改为如下信息即可。

<VirtualHost *:443> 
	ServerAdmin admin@example.com 
	ServerName example.com 
	ServerAlias www.example.com 
	DocumentRoot /var/www/html/example.com/public_html/ 
	DirectoryIndex index.html 
	
	# SSL configuration 
	SSLEngine On 
	SSLCertificateFile /etc/apache2/ssl/example.com/example.com.crt 
	SSLCertificateKeyFile /etc/apache2/ssl/example.com/example.com.key
	SSLCACertificateFile /etc/apache2/ssl/example.com/root_bundle.crt 
	
	# Log files 
	ErrorLog /var/www/html/example.com/log/error.log 
	CustomLog /var/www/html/example.com/log/access.log combined 
</VirtualHost>

<VirtualHost *:80> 
	ServerName example.com 
	ServerAlias www.example.com 
	Redirect permanent / https://example.com/ 
</VirtualHost>

完成站点配置文件修改后, 在命令行运行 a2enmod ssla2ensite example.com 启用这个修改后的配置,紧接着 service apache2 restart 重启 Apache 服务器,这样证书就安装完了,再访问网站时域名前就能看见小锁了。


本文中引用的资源:

1: 腾讯云:https://cloud.tencent.com/
2: 腾讯云 SSL 证书产品:https://console.cloud.tencent.com/certoverview

– EOF –

Mac Os X yosemite 中配置Apache

启动Apache

Mac自带Apache环境,所需要做的就是启动它然后进行相应的配置。

打开「终端(terminal)」,输入 「sudo apachectl -v」 ,可以看到Mac Os X Yosemite中内置的 Apache 版本。

在「终端」中输入 「sudo apachectl start」 启动 Apache。

打开浏览器在地址栏中输入「http://localhost」,会出现「It works!」页面。

页面默认的位置在 /Library/WebServer/Documents/ 下,这是 Apache 的默认根目录。 Apache 默认安装在 /etc/apache2/ 。

设置虚拟主机

修改 Apache 配置文件, 在 「/etc/apache2/httpd.conf」 ,使用 vim 进行编辑。

找到 「#include /private/etc/apache2/extra/httpd-vhosts.conf」 ,将其注释「#」删除。

重新启动 Apache , 「sudo apachectl restart」,虚拟主机设置开启。

配置虚拟主机,用 vim 打开 「/etc/apache2/extra/httpd-vhosts.conf」 进行配置,配置代码如下。


  DocumentRoot "/Library/WebServer/Documents"
  ServerName localhost
  ErrorLog "/private/var/log/apache2/localhost-error_log"
  CustomLog "/private/var/log/apache2/localhost-access_log" common



  DocumentRoot "/Users/yourLoginName/Sites"
  ServerName sites
  ErrorLog "/private/var/log/apache2/sites-error_log"
  CustomLog "/private/var/log/apache2/sites-access_log" common
  
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order deny,allow
    Require all granted
  

配置完成后保存文件,在hosts配置文件「/etc/hosts」中增加「127.0.0.1 sites」,重新启动Apache,中浏览器中输入「http://sites」即可正常访问。

本机使用.htaccess文件Apache配置

在本机调试PHP代码,使用.htaccess文件出现500 Internal Server Error的错误,修改Apache配置后即可正常使用,配置包含两部分:

1、开启rewrite_module

取消前面的注释。

LoadModule rewrite_module modules/mod_rewrite.so

2、设置AllowOverride属性

将你的目录或者别名配置中的AllowOverride修改为All。

AllowOverride All

修改完配置后重启Apache即可正常使用.htaccess文件。

在Apache中增加虚拟目录

在Apache中添加虚拟目录的步骤如下:

1、打开httpd.conf配置文件,找到IfModule alias_module,添加虚拟目录;

2、对虚拟目录进行设置;

3、重启apache服务;

比如,添加一个selfjobs的虚拟目录,首先在<IfModule alias_module>…</IfModule>之间添加:

添加虚拟目录


    Alias /selfjobs/ "/var/www/html/phpjobs/"

配置目录


    AllowOverride None
    Options None
    Order allow,deny
    Allow from all

重启apache服务

apachectl start