如何在Arch Linux Web服务器上使用HTTPS

先决条件

  • 运行最新Arch Linux的Vultr服务器(请参阅本文。)
  • 正在运行的Web服务器,ApacheNginx
  • 须藤访问
    • 要求以root身份运行的命令以前缀#,而可以以普通用户身份运行的命令以前缀$。建议以root用户身份运行命令的方式是,以普通用户的身份为每个命令添加前缀sudo
  • 安装并熟悉文本编辑器,例如vi,vim,nano,emacs或其他类似的编辑器。

通过HTTPS安全服务

通过HTTPS提供内容可以使用非常强大的加密,因此,没有人拦截用户和Web服务器之间的流量,无法读取该内容。它不仅对流量本身进行加密,而且对所访问的URL进行加密,否则将暴露信息。一段时间以来,作为HTTPS Everywhere计划的一部分,Google一直根据网页是否使用HTTPS来部分确定搜索排名。

注意DNS查找不会公开正在连接的域名,但是在此过程中不会公开整个URL。

获取SSL / TLS证书

从技术上讲,TLS取代了HTTPS证书的SSL,但是,大多数地方只是继续使用更流行的术语SSL证书来调用TLS证书。遵循常用用法,本指南将执行相同的操作。

要使用HTTPS,您的Web服务器需要一个私钥(.key)才能私有使用,并需要一个证书(.crt)进行公开共享,其中包括一个公钥。必须签署证书。您可以自己对其进行签名,但是现代的浏览器会抱怨它们无法识别该签名者。例如,Chrome将显示:Your connection is not private. Attackers might be trying to steal your information... NET::ERR_CERT_AUTHORITY_INVALID。如果只有一群人在使用该网站,这是可以接受的,因为浏览器将允许继续进行操作。例如,在Chrome上,点击“高级”,然后点击“继续...(不安全)”;仍然会显示“不安全”并划掉“ https”。

请注意,此过程将询问您您所在的国家,州/省,地区,组织,组织单位和惯用名称,以及您的电子邮件地址;所有这些都可以在通过HTTPS连接到您网站的任何浏览器中访问。

还要注意,如果要给虚拟主机证书,则需要在下面提供不同的文件名,并在虚拟主机配置中指向它们。

切换到适合您的Web服务器的目录。

如果安装了Apache:

$ cd /etc/httpd/conf

如果您安装了Nginx:

$ cd /etc/nginx

进入正确的目录后,生成一个私钥(server.key)和自签名证书(server.crt):

# openssl req -new -x509 -nodes -newkey rsa:4096 -keyout server.key -out server.crt -days 825

设置只读权限,并且仅允许由根用户读取私钥:

# chmod 400 server.key
# chmod 444 server.crt

或者,您可以获取由受信任的证书颁发机构签名的证书。您可以支付各种公司(证书颁发机构)来为您签名证书。在考虑证书颁发机构时,重要的是要研究哪些浏览器和哪些版本可以识别它们。在较旧的浏览器版本上,某些新的证书颁发机构可能不被视为比自签名证书更正式的证书。

通常,您不仅需要一个公共IP地址,而且还需要一个域名。一些证书颁发机构可以将证书颁发给公共IP地址,但是很少这样做。

许多提供商都提供30天的免费试用期,建议从30天开始免费试用。这样一来,您可以在付款之前确保该过程对您有效。价格可能从每年几美元到几百美元不等,这取决于它是哪种类型以及诸如多个域或子域之类的选项。标准证书仅表示签署机构已验证获得证书的人可以在域上进行更改。扩展验证证书还将指示签名授权机构对请求者进行了一些尽职调查,并且在现代浏览器中将在URL内或URL附近显示一个绿色条。在验证您可以在域上进行更改时,某些签名机构会要求您在域名的重要探测地址接收电子邮件,例如admin@your-domain.com。许多提供替代验证,例如为您提供文件放置在服务器上,例如将文件放置在/srv/http/.well-known/pki-validation/Apache或/usr/share/nginx/html/.well-known/pki-validation/Nginx中,以用于单个主机目录配置。或临时创建一个CNAME条目,它们会在您域的DNS记录中为您提供。

您选择的签名机构可能具有略有不同的步骤,但是大多数将接受以下过程:

在适当的目录中,生成一个私钥(server.key):

# openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out server.key

将私钥设置为只读,仅通过root用户:

# chmod 400 server.key

生成证书签名请求(server.csr)。当要求您输入时,必须输入您的域名Common Name,并且可以将质询密码留为空白:

# openssl req -new -sha256 -key server.key -out server.csr

将证书签名请求设置为只读,仅按root身份:

# chmod 400 server.csr

查看证书签名请求的内容。此信息是base64编码的,因此将看起来像随机字符:

# cat server.csr
-----BEGIN CERTIFICATE REQUEST-----
.....
-----END CERTIFICATE REQUEST-----

进行签名机构的过程,并在要求粘贴到CSR中时,复制并粘贴整个文件,包括-----行。根据您选择的签名授权和证书的类型,它们可能会立即为您提供已签名的证书,或者可能是几天。当他们给您签名的证书后,将其(包括-----BEGIN CERTIFICATE----------END CERTIFICATE-----行)复制到一个文件server.crt,位于上面为您的Web服务器指定的正确目录中,并将其设置为只读:

# chmod 444 server.crt

配置您的Web服务器以使用私钥和证书

如果您使用的是防火墙,则需要启用到端口的传入TCP通信443

对于Apache

编辑/etc/httpd/conf/httpd.conf并取消注释这些行:

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Include conf/extra/httpd-ssl.conf

请注意,如果您使用的是虚拟主机,则将上面的更改更改为/etc/httpd/conf/httpd.conf将在所有主机上使用相同的证书。要为每个主机提供自己的证书以避免浏览器抱怨该证书与域名不匹配,您需要编辑其每个配置文件/etc/httpd/conf/vhosts/以指向其自己的证书和私钥:

  • 更改<VirtualHost *:80><VirtualHost *:80 *:443>
  • 在此VirtualHost部分中,添加以下内容:

    SSLEngine on
    SSLCertificateFile "/etc/httpd/conf/YOUR-DOMAIN-NAME.com.crt"
    SSLCertificateKeyFile "/etc/httpd/conf/YOUR-DOMAIN-NAME.com.key"
    

重新启动Apache:

# systemctl restart httpd

对于Nginx

编辑/etc/nginx/nginx.conf并在底部附近,取消注释HTTPS server部分,并将行更改为以下内容:

ssl_certificate      server.crt;
ssl_certificate_key  server.key;
root                /usr/share/nginx/html;

请注意,如果您使用的是虚拟主机,则将上面的更改更改为/etc/nginx/nginx.conf将所有主机发送到该位置。要为每个主机分配自己的证书,您需要在其中编辑每个配置文件,/etc/nginx/sites-enabled/以拥有一个额外的服务器块来指向自己的证书和私钥:

server {
    listen 443 ssl;
    server_name YOUR-DOMAIN-NAME.com;

    ssl_certificate      YOUR-DOMAIN-NAME.com.crt;
    ssl_certificate_key  YOUR-DOMAIN-NAME.com.key;

    ssl_session_cache   shared:SSL:1m;
    ssl_session_timeout 5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    location / {
        root /usr/share/nginx/YOUR-DOMAIN-NAME.com;
        index  index.html index.htm;
    }
}

重新启动Nginx:

# systemctl restart nginx


Leave a Comment

在Arch Linux上安装Spigot Server

在Arch Linux上安装Spigot Server

本教程说明了如何在Arch Linux上使用Spigot设置Minecraft服务器。本教程假定您是普通用户(非root用户)并且具有hav

使用Btrfs快照安装Arch Linux

使用Btrfs快照安装Arch Linux

前言Arch Linux是一种通用发行版,以其先进的技术和灵活的配置而闻名。使用Btrfs快照,我们可以

如何在Arch Linux上安装MariaDB 10.3或MySQL 8.0

如何在Arch Linux上安装MariaDB 10.3或MySQL 8.0

先决条件运行最新的Arch Linux的Vultr服务器(请参阅本文。)Sudo访问:需要以root身份运行的命令以#开头,其中一个

在Arch Linux上安装Mumble Server

在Arch Linux上安装Mumble Server

本教程说明了如何在Arch Linux上设置Mumble服务器(Murmur)。本教程中完成的所有操作均以root用户身份完成。安装

如何在Arch Linux上安装Nginx 1.14

如何在Arch Linux上安装Nginx 1.14

先决条件运行最新的Arch Linux的Vultr服务器(请参阅本文。)Sudo访问。需要以root身份运行的命令带有#前缀。钍

如何在Arch Linux Web服务器上安装PHP 7.3

如何在Arch Linux Web服务器上安装PHP 7.3

先决条件运行最新的Arch Linux的Vultr服务器(请参阅本文。)正在运行的Web服务器,可以使用Apache或Nginx Sudo访问。命令要求

在Arch Linux上设置反恐精英:全球攻势(CSGO)服务器

在Arch Linux上设置反恐精英:全球攻势(CSGO)服务器

本教程说明了如何在Arch Linux上设置“反恐精英:全球攻势”服务器。本教程假定您以标准用法登录

如何在Arch Linux上安装PostgreSQL 11.1

如何在Arch Linux上安装PostgreSQL 11.1

先决条件运行最新的Arch Linux的Vultr服务器(请参阅本文。)Sudo访问。需要以root身份运行的命令以#开头,其中一个

在Arch Linux上使用Devtools

在Arch Linux上使用Devtools

Devtools软件包最初是为受信任的用户制作的,可以为官方存储库正确创建软件包。但是,普通用户可以使用

在Vultr服务器上安装2019 Arch Linux

在Vultr服务器上安装2019 Arch Linux

简介Arch Linux的规模较小,但仍然比流行的发行版本强大。其理念截然不同,具有优势

如何在Arch Linux Web服务器上安装Python 3.7

如何在Arch Linux Web服务器上安装Python 3.7

先决条件运行最新的Arch Linux的Vultr服务器(请参阅本文。)正在运行的Web服务器,可以使用Apache或Nginx Sudo访问:命令需要

如何在Arch Linux上安装MongoDB 4.0

如何在Arch Linux上安装MongoDB 4.0

先决条件运行最新的Arch Linux的Vultr服务器(请参阅本文)Sudo访问:需要以root身份运行的命令以#开头,其中一个

在Arch Linux上构建软件包(包括AUR)

在Arch Linux上构建软件包(包括AUR)

在Arch Linux上,官方存储库为:核心,额外和社区。这些软件包已被编译,并通过pacman安装。向前

在Vultr服务器上安装Arch Linux

在Vultr服务器上安装Arch Linux

Vultr除了出色的模板之外,还为您提供了令人敬畏的功能,使您可以使用自己的自定义图像,从而使您可以运行

如何在Arch Linux上安装Apache 2.4

如何在Arch Linux上安装Apache 2.4

先决条件运行最新Arch Linux的Vultr服务器。有关更多信息,请参见本指南。须藤访问。需要以root用户身份运行的命令

如何在Arch Linux Web服务器上安装Perl 5.28

如何在Arch Linux Web服务器上安装Perl 5.28

先决条件运行最新的Arch Linux的Vultr服务器(请参阅本文。)正在运行的Web服务器,可以使用Apache或Nginx Sudo访问:命令需要

在Arch Linux上设置Team Fortress 2服务器

在Arch Linux上设置Team Fortress 2服务器

本教程说明了如何在Arch Linux上设置Team Fortress 2服务器。我假设您使用具有sudo访问权限的非root用户帐户登录

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

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 機器變磚。閱讀這篇文章以了解更多信息