在Ubuntu 16.04上使用自签名TLS / SSL证书配置Apache

SSL及其后续的TLS(安全套接字层/传输层安全性)在客户端和服务器之间添加了一层加密。如果没有这项技术,数据将以纯文本格式发送到服务器,从而使第三方可以读取服务器发送和接收的所有信息。

本教程将教您如何创建SSL / TLS证书并在Ubuntu 16.04的Apache 2.4上激活它。我认为Apache已经设置并正在运行。如果要学习如何安装LAMP堆栈,请参阅此Vultr文档

注意

SSL / TLS证书通常由受信任的CA(证书颁发机构)生成。通过自己生成证书,您将成为签名者,这意味着浏览器将无法验证证书的身份是否值得信任,并会警告用户。尽管可以绕过此警报,但面向公众的站点应使用受信任的CA签名的证书。 让我们加密的是一个免费提供证书的CA。您可以在此处了解如何在Apache和Ubuntu 16.04中安装其证书。

对于内部应用程序,使用自签名证书可能是有效的,尤其是在您没有域名的情况下。


步骤1:生成证书

  1. 首先,让我们创建一个存储文件的地方。

    mkdir ~/certificates
    cd ~/certificates
    
  2. 生成CSR和私钥。

    openssl req -x509 -newkey rsa:4096 -keyout apache.key -out apache.crt -days 365 -nodes
    

    它将要求提供有关证书申请的信息。填写适当的信息。

    Country Name (2 letter code) [AU]: US
    State or Province Name (full name) [Some-State]: FL
    Locality Name (eg, city) []: Miami
    Organization Name (eg, company) [My Company]: My Company
    Organizational Unit Name (eg, section) []:
    

    通用名称应该是您的域名或服务器的IP地址。另外,填写您的电子邮件。

    Common Name (e.g. server FQDN or YOUR name) []: 203.0.113.122
    Email Address []:[email protected]
    
  3. 现在,将证书移动到Apache配置文件夹。

    mkdir /etc/apache2/ssl
    mv ~/certificates/* /etc/apache2/ssl/.
    
  4. 证书已准备好!接下来,我们将准备Apache以使用证书。

步骤2:防火墙设定

  1. 我们必须确保TCP端口443已打开。该端口用于SSL连接,而不是端口80。在本教程中,我们将使用UFW。

  2. 确保启用了UFW。

    sudo ufw enable
    
  3. 现在,为防火墙允许预定义的Apache设置。

    sudo ufw allow 'Apache Full'
    
  4. 通过输入“ sudo ufw status”,您可以看到当前规则的列表。您的配置应类似于以下内容:

    To                         Action      From
    --                         ------      ----
    Apache Full                ALLOW       Anywhere
    OpenSSH                    ALLOW       Anywhere
    Apache Full (v6)           ALLOW       Anywhere (v6)
    OpenSSH (v6)               ALLOW       Anywhere (v6)
    
  5. 您还应该在此处允许OpenSSH用于将来的连接。

    sudo ufw allow 'OpenSSH'
    

步骤3:Apache虚拟主机配置

  1. 导航到默认的Apache站点配置目录。

    sudo nano /etc/apache2/sites-available/default-ssl.conf
    
  2. 该文件告诉服务器在哪里寻找SSL证书。删除注释后,其外观应类似于以下配置。

    <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. 编辑此行:

    ServerAdmin [email protected]
    
  4. ServerAdmin在行下面添加此代码:

    ServerName ADD_YOUR_IP_OR_DOMAIN_NAME_HERE
    
  5. 现在,使用我们的证书位置编辑这些行:

    SSLCertificateFile    /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key
    
  6. 我们的最终文件应类似于以下内容:

    <IfModule mod_ssl.c>
     <VirtualHost _default_:443>
      ServerAdmin [email protected]
      ServerName 203.0.113.122
    
      DocumentRoot /var/www/html
    
      ErrorLog ${APACHE_LOG_DIR}/error.log
      CustomLog ${APACHE_LOG_DIR}/access.log combined
    
      SSLEngine on
    
      SSLCertificateFile    /etc/apache2/ssl/apache.crt
      SSLCertificateKeyFile /etc/apache2/ssl/apache.key
    
      <FilesMatch "\.(cgi|shtml|phtml|php)$">
       SSLOptions +StdEnvVars
      </FilesMatch>
      <Directory /usr/lib/cgi-bin>
       SSLOptions +StdEnvVars
      </Directory>
    
     </VirtualHost>
    </IfModule>
    
  7. 保存并关闭文件。

步骤4:启用Apache SSL模块

  1. 通过键入以下内容来启用SSL模块:

    sudo a2enmod ssl
    
  2. 现在启用我们刚刚编辑的站点:

    sudo a2ensite default-ssl.conf
    
  3. 重新启动Apache:

    sudo service apache2 restart
    
  4. 让我们访问新的安全网站!在浏览器中打开它(确保您输入https://)。

    https://YOUR_SERVER_IP
    

如我们所料,您的浏览器会警告您该证书无效。这是因为未签名证书。请按照浏览器提供的步骤进入您的网站。

步骤5:将所有HTTP通信重定向到HTTPS(可选)

  1. 打开Apache默认虚拟主机文件:

    nano /etc/apache2/sites-available/000-default.conf
    
  2. <VirtualHost *:80>标记内添加以下行:

    Redirect / https://YOUR_SERVER_IP_OR_DOMAIN/
    
  3. 重新加载Apache配置:

    sudo service apache2 reload
    

现在,所有网站流量都将自动重定向到HTTPS。



Leave a Comment

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

什麼是日誌文件系統,它是如何工作的?

什麼是日誌文件系統,它是如何工作的?

我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true

技術奇點:人類文明的遙遠未來?

技術奇點:人類文明的遙遠未來?

隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

2021 年人工智能對醫療保健的影響

2021 年人工智能對醫療保健的影響

過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。