ubuntu apache2 安装和配置安装ssl证书

这篇具有很好参考价值的文章主要介绍了ubuntu apache2 安装和配置安装ssl证书。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前提条件

在开始安装之前,要确保你以 sudo 权限用户身份登录。

二、安装 Apache

Apache 被包含在默认的 Ubuntu 软件源中。
安装非常直接。在 Ubuntu 和 Debian 系统中,Apache 软件包和服务被称为 apache2
运行下面的命令来更新软件包索引,并且安装 Apache:

sudo apt update
sudo apt install apache2

当安装过程完成,Apache 服务将会被自动启动。
你可以通过输入下面的命令,验证 Apache 是否正在运行:

sudo systemctl status apache2

输出将会告诉你,服务正在运行,并且启动了开机启动。

● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-05-09 19:28:40 UTC; 36min ago
...

就这些,你已经成功地在你的 Ubuntu 20.04上安装了 Apache,你可以开始使用它了。

三、打开 HTTP 和 HTTPS 端口

Apache 监听了端口80(HTTP)和443(HTTPS)。你需要在防火墙打开那些端口,以便网站服务器从互联网上是可以访问的。
假设你正在使用UFW,你可以通过启用Apache Full配置,它包含了这两个端口的规则:

sudo ufw allow 'Apache Full'

验证改变:

sudo ufw status

输出如下:

Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
Apache Full                ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
Apache Full (v6)           ALLOW       Anywhere (v6)

四、验证 Apache 安装

想要验证一切都顺利工作,打开你的浏览器,输入服务器 IP 地址http://YOUR_IP_OR_DOMAIN/,你可以看到默认的 Ubuntu 20.04 Apache 欢迎页面,如图所示:

以下非必要设置

五、设置一个虚拟主机

一个虚拟主机,是一个 Apache 配置指令,它允许你在一个服务器上运行多个网站。典型的例子,一个虚拟主机描述了一个网站。
Apache 默认启动了一个虚拟主机。所有域名都指向服务器 IP 地址,匹配了默认的虚拟主机。如果你只托管一个简单的网站,你需要将网站内容上传到/var/www/html,并且编辑虚拟主机配置,/etc/apache2/sites-enabled/000-default.conf文件。
如果你想托管更多网站,你需要为每一个网站创建一个虚拟主机配置。在这一节,我们将会为一个域名"example.com"设置网站。你可能需要将"example.com"替换成你自己的域名。
第一步就是创建根目录文件夹,域名的网站文件将会被存放在这里并且响应用户请求。运行下面的命令,创建文件夹:

sudo mkdir -p /var/www/example.com

为了测试,在域名根文件夹下创建一个index.html文件:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Welcome to example.com</title>
  </head>
  <body>
    <h1>Success! example.com home page!</h1>
  </body>
</html>

创建完成后,保存并且退出。
如果想要避免权限问题,可以修改域名根文件夹的用户归属为apache 用户(www-data):

sudo chown -R www-data: /var/www/example.com

接下来就是为域名“example.com”创建一个虚拟主机配置。最佳实践就是将每一个虚拟主机配置存储成一个独立的文件。
Apache虚拟主机配置文件存储在/etc/apache2/sites-available目录。标准命名是使用域名来命名配置文件。
打开你的文本编辑器,并且创建如下文件/etc/apache2/sites-available/example.com.conf

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin webmaster@example.com
    DocumentRoot /var/www/example.com/public_html
    <Directory /var/www/example.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
    CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>

Apache 不会读取/etc/apache2/sites-available文件夹下的配置文件,除非它们被链接到/etc/apache2/sites-enabled文件夹。
想要激活虚拟主机配置,使用a2ensite创建一个链接:

sudo a2ensite example.com

测试配置文件,是否有任何语法错误:

sudo apachectl configtest

如果没有任何错误,你将会看到下面的输出:

Syntax OK

重启 Apache 服务,使修改生效:

sudo systemctl restart apache2

以下开始配置SSL

1.证书准备,上传到服务器,建议在apache2目录下建立ssl目录来放置证书文件

2. 配置证书

在这里,我假设你已经会配置基本的/etc/apache2/sites-available/000-default.conf这个文件来达到已经可以通过 http 的方式来访问你的站点。

在/etc/apache2这个目录下,有两个有关的目录sites-available和sites-enabled,我们进入sites-enabled目录下可以发现,里面有一个文件000-default.conf

$ ll 
lrwxrwxrwx 1 root root 35 Dec 28 15:24 000-default.conf -> ../sites-available/000-default.conf

实质上这个文件是/etc/apache2/sites-available/000-default.conf这个文件的软链接。

我们要配置另 ssl 证书,要依靠另一个文件,也就是default-ssl.conf,首先我们需要设置一个软链接,把这个文件链接到sites-enabled这个文件夹中:

ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf

然后去修改这个文件000-default-ssl.conf,因为已经做了软链接,其实这时候修改000-default-ssl.conf或default-ssl.conf都一样。

这个文件没有做任何修改前长这样子(去除自带的注释之后):

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/html

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

        SSLEngine on

        SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
        SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>

    </VirtualHost>
</IfModule>

然后把从阿里云上面下载好的证书(3个文件)传到你自定义的目录中

然后我们需要修改一下,修改成这样:

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin 你的邮箱
        
        DocumentRoot /var/www/你的目录
        ServerName 你的域名

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

        SSLEngine on
        # 注意,需要添加这三行
        SSLCertificateFile 你自定义的路径/2_xxx.xxx.xxx.crt
        SSLCertificateKeyFile 你自定义的路径/3_xxx.xxx.xxx.key
        SSLCertificateChainFile 你自定义的路径/1_root_bundle.crt
    
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>
    </VirtualHost>
</IfModule>

重要的三个参数的作用如下表:

配置文件参数 说明
SSLEngine on 启用 SSL 功能
SSLCertificateFile 证书文件
SSLCertificateKeyFile 私钥文件
SSLCertificateChainFile 证书链文件

改好之后保存。

然后这时,我们加载一下 Apache2 的 SSL 模块:

sudo a2enmod ssl   #加载模块
sudo service apache2 restart # 重启服务

这时,在浏览器输入https://你的域名应该已经可以通过 https 的方式来访问网站了,这时浏览器那里应该也已经有了一个绿色的小锁。

但是,但是…这还不够,因为我们如果不主动输入https://的话,直接输入域名,还是会直接跳转到 80 端口的普通的 http 方式访问,所以我们需要强制使用 https 来访问

强制使用https

我们只需要打开/etc/apache2/sites-available/000-default.conf这个文件,在你的这个标签内随便一个地方加上三行:

RewriteEngine on
RewriteCond   %{HTTPS} !=on
RewriteRule   ^(.*)  https://%{SERVER_NAME}$1 [L,R]

然后保存,然后启动 Apache2 的重定向:

 sudo a2enmod rewrite

然后再重启 Apache2,至此大功告成:

sudo service apache2 restart

然后,打开浏览器直接输入域名,就会自动跳转到 https 的方式。文章来源地址https://www.toymoban.com/news/detail-406179.html

到了这里,关于ubuntu apache2 安装和配置安装ssl证书的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 小米note4x 刷ubuntu touch 后 换源&&apache2 报错

    Ubuntu-Touch-mido(Pre-Alpha V1.1).zip File sharing and storage made simple MediaFire is a simple to use free service that lets you put all your photos, documents, music, and video in a single place so you can access them anywhere and share them everywhere. https://download1321.mediafire.com/0179ujnsun0gjuTkAP6qf3cefmowb1lIx0a7phRCXxEttPLPHmCTKu6Lj0SIcheyspZi

    2024年01月21日
    浏览(29)
  • debian 10 安装apache2 zabbix

     nginx 可以略过,改为apache2 mysql 安装参考linux debian10 安装mysql5.7_debian apt install mysql5.7-CSDN博客 Install and configure Zabbix for your platform a. Install Zabbix repository Documentation b. Install Zabbix server, frontend, agent c. Create initial database Documentation Make sure you have database server up and running. Run the foll

    2024年02月08日
    浏览(36)
  • windows10下设置本地apache\nginx站点部署ssl证书,使本地配置的域名可以用https访问

    首先我们需要下载openssl来生成证书文件: 去官方网址下载https://slproweb.com/products/Win32OpenSSL.html; 下载好了,双击exe文件,然后就下一步,下一步安装完成; 安装之后配置环境变量,新建一个系统变量OPENSSL_HOME,值就是你安装目录下的bin,然后在系统变量path,增加%OPENSSL_HO

    2024年02月15日
    浏览(33)
  • apache2配置文件 Require all granted是什么意思

    修改apache2的配置文件 /etc/apache2/apache2.conf,需要增加网站代码的路径,下列配置是什么意思呢 Options - 如果设置了这个选项,表示禁用了指定的功能,这里的 \\\"Indexes\\\" 表示禁用目录列表功能,即当用户访问一个目录时,不会显示该目录下的文件列表。 FollowSymLinks - 如果设置了这

    2024年02月11日
    浏览(31)
  • http的ssl证书保姆级配置安装-多域名 免费ssl证书 解析 nginx配置

    摘要:多个域名(mysite.com,*.mysite.com),免费证书,添加解析记录,申请证书的shell脚本,nginx配置 登录免费证书网站:https://freessl.cn/ 输入:mysite.com,*.mysite.com 选择亚洲诚信trustasia 点击“创建免费的ssl证书” ACME域名配置 域名:确认刚才输入的mysite.com,*.mysite.com无误,点击下

    2024年02月09日
    浏览(44)
  • docker安装nginx并配置ssl证书

    腾讯云申请 阿里云申请 还有一步DNS验证,因为我这边已经申请了证书,不好演示了。也挺简单的,按照教程来就行了,在域名解析里面加一条DNS解析记录,然后点击验证,通过了,就申请成功了,然后下载nginx版本的证书压缩包,解压上传到服务器就可以了 *稍微需要注意下

    2024年02月05日
    浏览(27)
  • 2.搭建Fabric区块链网络环境——前提条件和fabric的安装

    这些前提条件的满足确保了你可以顺利地搭建和运行 Fabric 区块链网络,并进行链码的开发、部署和执行。 安装 Docker:确保系统上已经安装了 Docker,并且 Docker 服务正在运行。 Docker:Fabric 使用 Docker 容器化技术来部署和管理区块链网络的各个组件。Docker 提供了一个轻量级、

    2024年02月11日
    浏览(40)
  • 【100个 Unity实用技能】☀️ | 关于触发器互相检测的必要前提条件配置

    老规矩,先介绍一下 Unity 的科普小知识: Unity 是 实时3D互动内容创作和运营平台 。 包括 游戏开发 、 美术 、 建筑 、 汽车设计 、 影视 在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和

    2023年04月09日
    浏览(56)
  • Docker安装emqx详解(配置SSL证书、开启WSS、鉴权)

    EMQX 是一款大规模可弹性伸缩的云原生分布式物联网 MQTT 消息服务器。 1 端口介绍 1883:MQTT 协议端口 8084:MQTT/SSL 端口 8083:MQTT/WebSocket 端口 8080:HTTP API 端口 18083:Dashboard 管理控制台端口 2 拉取镜像 3 启动临时容器 其他小知识 选项 选项简写 说明 –detach -d 在后台运行容器,

    2023年04月16日
    浏览(36)
  • aliyun服务器(Linux)安装emqx,配置ssl证书

    EMQX版本:5.0.8 操作系统及版本:Ubuntu 20.04.1 云服务器:阿里云轻量应用服务器 所用软件:WinSCP、XShell、宝塔面板、MQTTX 其他 食用本文的前提:服务器已经购买,相关基础配置已经完备,域名已经备案,域名与IP已经绑定。 文章末尾会提供所用到的软件 小破站找到的emqx安装

    2024年02月09日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包