启用网站的https访问

Apache开启SSL/https的过程

启用Apache SSL模块

a2enmod ssl

默认的Apache网站提供了一个启用SSL的有用模板

a2ensite default-ssl

重新启动Apache以使这些更改生效

service apache2 reload

===购买了证书的跳过生成步骤===

生成私钥

使用openssl工具生成一个RSA私钥

说明:生成rsa私钥,des3算法,2048位强度,server.key是秘钥文件名。
注意:生成私钥,需要提供一个至少4位的密码。

生成CSR(证书签名请求)

生成私钥之后,便可以创建csr文件了。
此时可以有两种选择。理想情况下,可以将证书发送给证书颁发机构(CA),CA验证过请求者的身份之后,会出具签名证书(很贵)。
另外,如果只是内部或者测试需求,也可以使用OpenSSL实现自签名,具体操作如下

生成自签名证书

如果你不想花钱让CA签名,或者只是测试SSL的具体实现。那么,现在便可以着手生成一个自签名的证书了。

需要注意的是,在使用自签名的临时证书时,浏览器会提示证书的颁发机构是未知的。

说明:crt上有证书持有人的信息,持有人的公钥,以及签署者的签名等信息。当用户安装了证书之后,便意味着信任了这份证书,同时拥有了其中的公钥。证书上会说明用途,例如服务器认证,客户端认证,或者签署其他证书。当系统收到一份新的证书的时候,证书会说明,是由谁签署的。如果这个签署者确实可以签署其他证书,并且收到证书上的签名和签署者的公钥可以对上的时候,系统就自动信任新的证书。

=====下面继续 进行证书路径指定=======

000-default.conf   #http服务器配置文件

default-ssl.conf      #https服务器配置文件

配置Apache以使用SSL

/etc/apache2/sites-enabled/default-ssl.conf

里面的注释希望你看一看  写得很清楚 每一行是干什么的    例如:错误日志呀 普通日志呀  端口呀  域名呀  脑子变通一下

nano /etc/apache2/sites-enabled/default-ssl.conf

到开头的部分<VirtualHost _default_:443>并进行以下修改。

ServerAdmin webmaster@localhost    #网站管理员邮箱
ServerName blog.moeyuuko.top:443    #域名

SSLCertificateFile /etc/apache2/ssl/apache.crt        #.crt路径
SSLCertificateKeyFile /etc/apache2/ssl/apache.key     #.key路径

SSLCACertificatePath /etc/apache2/ssl/                #ca.crt证书目录
SSLCACertificateFile /etc/apache2/ssl/apache.key      #ca.crt证书路径

进行这些更改后,请检查配置文件是否与以下内容匹配。

/ etc / apache2 / sites-enabled / default-ssl

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin webmaster@localhost
        ServerName example.com:443
        DocumentRoot /var/www/html

        . . .
        SSLEngine on

        . . .

        SSLCertificateFile /etc/apache2/ssl/apache.crt
        SSLCertificateKeyFile /etc/apache2/ssl/apache.key

        SSLCACertificatePath /etc/apache2/ssl/
        SSLCACertificateFile /etc/apache2/ssl/apache.key

保存并退出文件。

重新启动Apache以应用更改。

service apache2 reload

设置重定向规则--http跳转到https

注意: 如果没有启用rewrite的 使用命令 a2enmod rewrite 启用

然后修改 /etc/apache2/apache2.conf 配置文件

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All    #None改成All
Require all granted
</Directory>

最后 重启apache2

编辑器打开.htaccess文件,写入如下规则:

RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$ [NC]
RewriteCond %{REQUEST_URI} !^/tz.php    ##这行是排除,可删除,举例子而已
RewriteRule (.*) https://%{SERVER_NAME}/$1 [L]

解释:

%{SERVER_PORT} ##访问端口
%{REQUEST_URI} ##比如如果url是 http://localhost/tz.php,则是指 /tz.php
%{SERVER_NAME} ##比如如果url是 http://localhost/tz.php,则是指 localhost
以上规则的意思是,如果访问的url的端口不是443,且访问页面不是tz.php,则应用RewriteRule这条规则。这样便实现了:

访问了 http://localhost/index.php 或者 http://localhost/admin/index.php

等页面的时候会自动跳转到 https://localhost/index.php 或者 https://localhost/admin/index.php

但是访问 http://localhost/tz.php 的时候就不会做任何跳转 
[你可以把他删掉]

也就是说 http://localhost/tz.php 和 https://localhost/tz.php 两个地址都可以访问
点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注