Apache 配置 https

## Apache 配置 https

> Apache 版本: **2.4.10**
Linux 版本 : **Debian**

### 安装Apache
控制台命令:` sudo apt-get install apache2 `
安装好了Apache2会自动启动,但是自动启动的不包含https仅仅是http

**默认的配置路径**

Apache配置文件路径: ` cd /etc/apache2/`
Apache默认日志路径: `cd /var/log/apache2`

### 配置https
####首先
进入Apache的配置文件目录
`cd /etc/apache2/`

查看目录结构
`tree`

具体的目录结构如下
> apache2.conf
conf-available
conf-enabled
envvars
magic
mods-available
ports.conf
sites-available
sites-enabled

其中 ** apache2.conf** 是整个Apache的主配置文件,
部分代码
```
# Include module configuration:
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf

# Include list of ports to listen on
Include ports.conf

# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>

<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>

<Directory /var/www/>
Options Indexes FollowSymLinks
nclude module configuration:
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf

# Include list of ports to listen on
Include ports.conf

```
从代码可以看出配置文件主要就是引入了 `ports.conf` ,`mods-enabled/*.conf`,`mods-enabled/*.load`,`conf-enabled/*.conf` ,`sites-enabled/*.conf`文件,从文件名称也能看出来,除了`ports.conf`,其他的文件夹名称中包含`-enabled`都代表着在Apache中启用的配置,而`-available`的都为提供的模块但是并不一定已经在用。而且`-enabled`文件夹中的文件都是`-available`文件中的一个软链接。

我们需要启用https,也就是需要使用ssl协议,所以我们需要找到在`mods-available`文件夹中的`ssl.conf`,`ssl.load`,然后把这两个文件的软链接到`mods-enabled`中,这代表着在Apache中启用**ssl**模块
在`/etc/apache2/`目录下:
```
ln -s ./mods-available/ssl.conf ./mods-enabled/ssl.conf
ln -s ./mods-available/ssl.load ./mods-enabled/ssl.load
```
然后在`mods-enabled`目录下就能看到`ssl.conf`和`ssl.load`这两个文件了。

新建一个目录用来存放自己的证书文件
`mkdir ssl && cd ssl`

#### 开始证书制作:
生成2048位的加密私钥
`openssl genrsa -out server.key 2048`

生成证书签名请求(CSR)
`openssl req -new -key server.key -out server.csr`
在这一步当中会要求输入一些信息,比如国家,城市,这些都不重要,重要的是** Common Name** 这个需要输入你想要把证书用在什么域名是 比如我的就是 `www.notrue.cn` 然后这个后面的配置有关系。好像也可以写通配符,但是我没尝试过有兴趣的可以去试试。

生成类型为X509的自签名证书。有效期设置3650天,即有效期为10年
`openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt`

####修改vhost

这个在`sites-enabled`文件夹的`000-default.conf`文件当中
`vim 000-default.conf`

代码:
```
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request‘s Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com

ServerAdmin [email protected]
DocumentRoot /var/www/html

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>

```
可以看到这里面只是配置了一个普通的80端口的虚拟主机,也就是http请求,我们需要做的就是配置一个https的虚拟主机
在文件末尾添加
```
<VirtualHost *:443>
ServerName www.notrue.cn
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/2_www.notrue.cn.crt
SSLCertificateKeyFile /etc/apache2/ssl/3_www.notrue.cn.key
</VirtualHost>
```
其中的`ServerName`填入你刚才制作证书的时候的`Common Name`,然后保存

重启你的Apache
`service apache2 restart`

查看状态
`service apache2 status`
如果不出意外的话应该就是显示运行状态为** active (running) ** 。然后就可以访问了。
域名前面需要加`https://`(PS:会有一个×,这是因为没有CA认证)

### 加入CA认证
一般的话国内各大云服务商都有免费的CA证书。
[阿里云](https://common-buy.aliyun.com/?commodityCode=cas#/buy),[腾讯云](https://www.qcloud.com/product/ssl),都会有提供免费 的CA证书,然后你可以申请,记住域名修改了的话在Apache中`000-default.conf`文件中的`VirtualHost`中的`ServerName`也需要做相应的修改,然后你就可以云服务器商给你的文件上传到服务器上面去,并且在Apache配置中给添加上去,比如我的就是
```
<VirtualHost *:443>
ServerName www.notrue.cn
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/2_www.notrue.cn.crt
SSLCertificateKeyFile /etc/apache2/ssl/3_www.notrue.cn.key
SSLCertificateChainFile /etc/apache2/ssl/1_root_bundle.crt
</VirtualHost>

```

然后现在在浏览器访问的时候地址栏的`https`那儿就不会有一个×了。

### 遇到的问题

遇到了很多问题,最主要的还是自己CA制作证书,因为不懂,所以在`000-default.conf`文件中写成了
```
<VirtualHost *:443>
ServerName localhost
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/2_www.notrue.cn.crt
SSLCertificateKeyFile /etc/apache2/ssl/3_www.notrue.cn.key
</VirtualHost>

```
然后就一直提示我`ServerName`和公钥当中的ID不对,后面也是看了其他的人才知道。而且网上其他的人都没有用这个版本,或者说没有这个版本的教程,所以自己去看`apache2.conf`才知道整个Apache的文件结构,然后再根据自己的常识去改。

还有,在`ssl.conf`中注释掉
```
#SSLSessionCache dbm:${APACHE_RUN_DIR}/ssl_scache
#SSLSessionCache shmcb:${APACHE_RUN_DIR}/ssl_scache(512000)
#SSLSessionCacheTimeout 300
```
这三行,(前面加** # **表示注释),因为不注释的话会报错,报错一个模块没有引入。因为我还并不是太需要这个`Cache`所以就没管,就直接注释掉了.

应该就是这些问题了。。。

### 参考链接
[Apache 使用ssl模块配置HTTPS](http://blog.csdn.net/ithomer/article/details/50433363)
[apache 配置https 支持ssl](http://9911505.blog.51cto.com/9901505/1696285)
[自动安装证书](https://certbot.eff.org/#debianjessie-apache)

时间: 2024-10-05 04:21:41

Apache 配置 https的相关文章

Apache配置HTTPS功能

apache配置https 一.yum 安装openssl和openssl-devel,httpd-devel 二.生成证书(也可以从公司的证书颁发机构获取): #建立服务器密钥  openssl genrsa -des3 1024  > /usr/local/apache/conf/server.key    # 从密钥中删除密码(以避免系统启动后被询问口令) openssl rsa -in /usr/local/apache/conf/server.key > /usr/local/apa

Apache配置https

apache配置https一.yum 安装openssl和openssl-devel,httpd-devel 二.生成证书:openssl genrsa -des3 1024  > /usr/local/apache/conf/server.key建立服务器密钥  openssl rsa -in /usr/local/apache/conf/server.key > /usr/local/apache/conf/server2.key从密钥中删除密码(以避免系统启动后被询问口令) mv /us

Apache 配置HTTPS协议搭载SSL配置

在设置Apache + SSL之前, 需要做: 安装Apache, 请参见: Windows环境下Apache的安装与虚拟目录的配置, 下载安装Apache时请下载带有ssl版本的Apache安装程序. 在进行下一步之前, 请确认Apache已经安装并可以正常工作. 并且ssl需要的文件在如下的位置: [Apache安装目录]/modules/ mod_ssl.so [Apache安装目录]/bin/ openssl.exe, libeay32.dll, ssleay32.dll [Apache

在mac Apache配置https方式访问网站

引入httpd-ssl.conf文件 在相应的目录下找到httd-conf文件  一般都是在/etc/apache2/httpd.conf  下 取消掉Include /private/etc/apache2/extra/httpd-ssl.conf 前面的注释符号#  也就是引入httpd-ssl.conf文件 生成KEY和证书. 因为在 /private/etc/apache2/extra/httpd-ssl.conf 已经配置好KEY 和证书的名字所以下面的步骤中请不要修改生成的KEY文件

Apache配置HTTPS协议搭载SSl配置全过程

1.安装必要的软件 从Apache官方(www.apache.org)下载必要的ApacheHttpServer安装包,可以直接官方提供的绑定openssl的apache.文件名是:httpd-2.2.15-win32-x86-openssl-0.9.8m-r2.msi(我用的是Apache2.2.15for windows的版本,你可以点击此处下载最新的版本进行安装,最好选择含有openssl版本的哦)否则单独安装windows下的openssl比较麻烦,要么找到一个第三方的编译结果,要么自己

Apache配置https证书并跳转

对于网站实现https安全访问,需要做到以下几步:1.在域名解析商处申请ssl证书,该证书可以免费申请,申请下来后包括很多web配置的证书类型如下图:2.搭建web服务,我这里搭建的环境是LAMP环境.3.将ssl证书上传至对应的目录.4.配置ssl证书的认证访问.5.配置httpd的host访问.具体配置如下:域名的解析方式,在这里就不做赘述了.1. 关于lamp的环境搭建我这里使用的yum安装的环境,系统为centos6.9关于环境的搭建这里不进行介绍.LAMP环境安装完成后,确认是否有默认

Windows下Apache配置https

1.将mycert.crt 和mycert.key 文件复制到Apache 一级目录中 2.httpd.conf 开启相关的loadModule LoadModule ssl_module modules/mod_ssl.so 去掉前面#号 其他需要开启的 根据错误提示逐个开启 3.http-vhost.conf 加入配置 #原始配置 可以保留 listen 80 <VirtualHost *:80> DocumentRoot "D:/website/seo/public"

apache配置https步骤

配置过程如下: 步骤一:安装apache,使其支持SSL,并安装php 1.安装配有SSL模块的apache,apache_2.2.8-win32-x86-openssl-0.9.8g 2.配置apache以支持SSL:打开apache的配置文件conf/httpd.conf 1)LoadModule ssl_module modules/mod_ssl.so Include conf/extra/httpd-ssl.conf 去掉两行前面的# 2)注意修改httpd-ssl.conf 文件里的

Apache配置https启动不了的解决办法

准备工作:有备案了的http域名,去阿里云或者腾讯云购买SSL证书,有免费1年的: 第一步: 找到 #LoadModule ssl_module modules/mod_ssl.so 和 #Include conf/extra/httpd-ssl.conf,去掉前面的#号注释: 第二步: 编辑Apache根目录下 conf/extra/httpd-ssl.conf 文件,修改如下内容:(路径一定要填对,不然启动不了) Listen 443 <VirtualHost *:443> SSLEngi