ubuntu+apache2设置访问、重定向到https

本文介绍如何在Ubuntu 14环境下使用Apache2部署HTTPS服务,包括启用SSL和rewrite模块、配置虚拟主机、设置证书路径等步骤,并实现HTTP到HTTPS的重定向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:ubunt14裸机,apache2,php5

条件:证书(部分商家买域名送一年),域名,为了方便均在root用户下进行的

web目录:/var/www/test

证书目录(自建):/etc/apache2/cert

1.给apache2开启ssl、rewrite

a2enmod ssl

a2enmod rewrite

2.配置https的vhost文件(文件名:443www.conf)

 1 <VirtualHost *:443>
 2     ServerAdmin hkdnxycz@outlook.com
 3     ServerName www.xxxx.com
 4   #证书设置
 5     SSLEngine on
 6     SSLCertificateFile /etc/apache2/cert/www.crt
 7     SSLCertificateKeyFile /etc/apache2/cert/www.key
 8     SSLCertificateChainFile  /etc/apache2/cert/bundle.crt
 9   #web根目录
10     DocumentRoot /var/www/test
11   #日志
12     ErrorLog ${APACHE_LOG_DIR}/error.log
13     CustomLog ${APACHE_LOG_DIR}/access.log combined
14 
15 </VirtualHost>

3.建立链接(site-enabled下)

可以  ln 创建,也可以  a2ensite 443www   创建

4.service apache2 reload装上那俩模块,感觉放第一步后面更合理一点

5.service apache2 restart(重启apache2)

---------------------------------------------以上   https可以访问了-------------------------------------

为了让www.xxxx.com和xxxx.com也跳转到https://www.xxxx.com,再改动点东西

6.创建vhost文件(80www.conf) 

<VirtualHost *:80>
        ServerName www.xxxx.com
        ServerAlias xxxx.com
        DocumentRoot /var/www/test
        RewriteEngine On
        RewriteRule ^/(.*?)$ https://www.xxxx.com/$1 [R]
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

7.重复步骤35 

现在,无论访问xxxx.com或者www.xxxx.com,都是跳转到https://www.xxxx.com

 

吐槽:糟心的ubuntu没有apache,自然也没有httpd.conf文件,更没有ssl_module文件咯,本文也是结合网上内容整合的,仅适用于apache2.

结语:留个笔记,方便大家,同时自己以后用也好找。除代码外纯手打,个别错误还请让他错着吧。。

转载于:https://www.cnblogs.com/arliki/p/9401374.html

<think>好的,我现在需要帮助用户在Ubuntu系统上配置Apache2的SSL功能。首先,我应该回忆一下自己之前学过的相关知识,或者查找相关的步骤。根据用户提供的引用内容,看来有几个步骤是必须的:安装Apache2、启用SSL模块、配置SSL证书、设置重定向等。 用户的问题是如何在Ubuntu上为Apache2配置SSL证书。我需要先确保用户已经安装了Apache2。如果没有,可能需要先指导他们安装。但根据引用[2]和[5],用户可能已经安装过,但可能还是需要确认。比如,引用[2]提到安装Apache2的命令是sudo apt-get install apache2,而引用[5]提到了加载SSL模块的命令a2enmod ssl。所以安装和启用模块应该是必要的步骤。 接下来,用户需要配置SSL证书。根据引用[1]和[4],配置文件的路径在/etc/apache2/sites-available/目录下,默认可能有一个default-ssl.conf文件。需要修改其中的SSLCertificateFile、SSLCertificateKeyFile和SSLCertificateChainFile指向用户的证书文件。比如,证书可能有三个部分:2_xxx.crt是证书文件,3_xxx.key是私钥,1_root_bundle.crt是链文件。用户需要将这些路径正确配置。 然后,需要启用SSL虚拟主机。引用[1]提到使用符号链接将default-ssl.conf链接到sites-enabled目录,或者直接复制过去。命令可能是sudo a2ensite default-ssl.conf,然后重启Apache。或者像引用[1]中的例子,使用ln -s创建链接,但更标准的做法可能是使用a2ensite命令。 另外,用户可能还需要设置HTTP到HTTPS重定向。引用[1]提到需要启动重定向,这通常涉及到修改默认的HTTP配置文件(比如000-default.conf),添加重定向规则,使用mod_rewrite模块。例如,在VirtualHost块中添加RewriteEngine On,并重定向所有请求到HTTPS。 还有可能需要启用SSL模块和其他相关模块,如mod_ssl和mod_rewrite。引用[5]提到加载SSL模块使用a2enmod ssl,并重启Apache。而重定向可能需要启用rewrite模块,所以可能需要运行sudo a2enmod rewrite。 此外,防火墙设置可能需要调整,允许HTTPS的流量,通常端口是443。Ubuntu默认的UFW防火墙如果有启用,需要允许Apache Full,这样会同时开放80和443端口。 还需要提醒用户关于证书的路径是否正确,证书文件的权限是否设置正确,比如私钥应该是600权限,并且属于root用户,避免权限过松导致安全问题。 另外,根据引用[3],在修改配置文件前备份原始的SSL虚拟主机文件是一个好习惯,比如使用cp命令备份,避免配置错误后无法恢复。 总结步骤应该是: 1. 安装Apache2(如果尚未安装)。 2. 启用SSL模块和相关模块。 3. 配置SSL证书文件路径。 4. 启用SSL虚拟主机。 5. 设置HTTP到HTTPS重定向。 6. 调整防火墙设置。 7. 测试配置并重启Apache。 现在需要将这些步骤以清晰的方式呈现给用户,确保每个步骤都有对应的命令和解释。同时,检查是否有遗漏的步骤,比如证书的申请过程,但用户的问题可能已经拥有证书,所以重点在配置而非申请。如果用户没有证书,可能需要生成自签名证书或申请CA签发的证书,但根据引用[3],自签名证书的创建可能需要openssl命令,但用户的问题可能已经假设有了证书文件。 此外,需要验证配置文件的语法是否正确,可以使用apachectl configtest来检查,避免重启失败。在重启Apache服务之前,这个步骤很重要。 最后,在完成配置后,用户应该通过浏览器访问https://域名或IP来确认SSL证书是否生效,是否有安全警告(如自签名证书的情况),并检查是否正确重定向。 可能的问题点:用户是否已经将证书文件放在正确的目录下,比如/etc/ssl/certs/或自定义路径,需要确保路径正确。另外,证书链文件的配置是否正确,有时候可能需要合并中间证书和根证书到链文件中。 现在,根据这些思考,整理出一个步骤指南,确保覆盖所有必要的步骤,并参考用户提供的引用内容中的具体命令和路径。</think>### Ubuntu系统Apache2配置SSL证书分步指南 #### 一、安装Apache2(若未安装) ```bash sudo apt update sudo apt install apache2 ``` #### 二、启用SSL及相关模块 1. **启用SSL模块**: ```bash sudo a2enmod ssl ``` 2. **启用重写模块(用于HTTP重定向)**: ```bash sudo a2enmod rewrite ``` #### 三、配置SSL证书文件 1. **准备证书文件** 将证书文件(如`2_xxx.crt`、`3_xxx.key`、`1_root_bundle.crt`)上传至服务器目录(例如`/etc/ssl/certs/`)。 2. **修改SSL虚拟主机配置** 编辑默认SSL配置文件(路径:`/etc/apache2/sites-available/default-ssl.conf`): ```apache <IfModule mod_ssl.c> <VirtualHost _default_:443> # 修改以下路径为实际证书位置 SSLCertificateFile /etc/ssl/certs/2_xxx.crt SSLCertificateKeyFile /etc/ssl/certs/3_xxx.key SSLCertificateChainFile /etc/ssl/certs/1_root_bundle.crt # 其他配置保持默认 </VirtualHost> </IfModule> ``` - **备份配置文件**(可选但推荐): ```bash sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/default-ssl.conf.bak ``` #### 四、启用SSL虚拟主机 ```bash sudo a2ensite default-ssl.conf ``` #### 五、设置HTTP重定向HTTPS 1. **修改HTTP虚拟主机配置** 编辑默认HTTP配置文件(路径:`/etc/apache2/sites-available/000-default.conf`),在`<VirtualHost *:80>`块内添加: ```apache RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] ``` #### 六、调整防火墙(如启用UFW) ```bash sudo ufw allow 'Apache Full' # 同时放行80/443端口 sudo ufw reload ``` #### 七、测试并重启Apache 1. **检查配置语法**: ```bash sudo apachectl configtest ``` 输出应为`Syntax OK`。 2. **重启服务**: ```bash sudo systemctl restart apache2 ``` #### 八、验证结果 - 访问 `https://您的域名`,确认浏览器显示安全锁标志。 - 访问 `http://您的域名`,检查是否自动跳转到HTTPS。 --- ### 常见问题排查 1. **证书路径错误** 确保`SSLCertificateFile`等指令指向的路径正确,文件权限为`644`(证书)和`600`(私钥)。 2. **模块未启用** 若重定向失效,检查`mod_rewrite`是否启用:`sudo a2enmod rewrite`。 3. **端口冲突** 确认Apache监听443端口:`sudo netstat -tulpn | grep ':443'`。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值