当前位置: 首页 > 科技观察

如何在Ubuntu16.04上保护NGINXWeb服务器

时间:2023-03-15 18:54:33 科技观察

什么是Let'sEncryptLet'sEncrypt是来自互联网安全研究组(ISRG)的免费证书颁发机构。它提供了一种简单且自动的方式来获取免费的SSL/TLS证书——这是在您的Web服务器上启用加密和HTTPS流量的必要步骤。获取和安装证书的大部分步骤都可以使用名为Certbot的工具自动完成。特别是,该软件可以在有shell的服务器上使用:换句话说,它可以通过SSH连接使用。在本教程中,我们将了解如何使用certbot获取免费的SSL证书并在Ubuntu16.04服务器上使用Nginx。安装Certbot第一步是安装certbot,这是一个软件客户端,几乎可以自动执行每个过程。Certbot开发人员维护他们自己的Ubuntu存储库,其中包含比Ubuntu存储库中现有软件更新的软件。添加Certbot存储库:#add-apt-repositoryppa:certbot/certbot接下来,更新APT存储库列表:#apt-getupdate此时,可以使用以下apt命令安装certbot:#apt-getinstallcertbotCertbot现已安装并准备就绪使用。获取证书有多种Certbot插件可用于获取SSL证书。这些插件有助于获取证书,而证书安装和Web服务器配置则留给管理员。我们使用一个名为Webroot的插件来获取SSL证书。如果能够修改所提供的内容,建议使用此插件。Web服务器在证书颁发过程中不需要停止。配置NGINXWebroot会在web根目录下的.well-known目录中为每个域创建一个临时文件。在我们的例子中,Web根目录是/var/www/html。确保此目录可访问以进行Let'sEncrypt身份验证。为此,请编辑NGINX配置。使用文本编辑器打开/etc/nginx/sites-available/default:#$EDITOR/etc/nginx/sites-available/default在该文件的服务器块内,输入以下内容:location~/.well-known{allowall;}保存,退出并检查NGINX配置:#nginx-t如果没有错误,应该显示以下内容:nginx:theconfigurationfile/etc/nginx/nginx.confsyntaxisoknginx:configurationfile/etc/nginx/nginx.conftestissuccessfulNGINX:#systemctlrestartnginx使用Certbot获取证书下一步是使用Certbot的Webroot插件获取新证书。在本教程中,我们将保护示例域www.example.com。需要指定应由证书保护的每个域。执行以下命令:#certbotcertonly--webroot--webroot-path=/var/www/html-dwww.example.com在此过程中,Cerbot将要求提供有效的电子邮件地址以用于通知目的。也将请求与EFF共享,但不是必需的。同意服务条款后,它会得到一个新的证书。***,目录/etc/letsencrypt/archive将包含以下文件:chain.pem:Let'sEncrypt加密链证书。cert.pem:域名证书。fullchain.pem:cert.pem和chain.pem的组合。privkey.pem:证书的私钥。Certbot还将创建指向/etc/letsencrypt/live/domain_name/中证书文件的符号链接。这是我们将在服务器配置中使用的路径。在NGINX上配置SSL/TLS下一步是服务器配置。在/etc/nginx/snippets/中创建一个新片段。片段是可以包含在虚拟主机配置文件中的一段配置。按如下所示创建一个新文件:#$EDITOR/etc/nginx/snippets/secure-example.conf该文件的内容将指定证书和密钥位置。粘贴以下内容:ssl_certificate/etc/letsencrypt/live/domain_name/fullchain.pem;ssl_certificate_key/etc/letsencrypt/live/domain_name/privkey.pem;在我们的例子中,domain_name是example.com。编辑NGINX配置编辑默认虚拟主机文件:#$EDITOR/etc/nginx/sites-available/default如下:server{listen80default_server;listen[::]:80default_server;server_namewww.example.comreturn301https://$server_name$request_uri;#SSLconfiguration#listen443ssldefault_server;listen[::]:443ssldefault_server;includesnippets/secure-example.conf##Note:YoushoulddisablegzipforSSLtraffic.#See:https://bugs.debian.org/773332#...这将启用NGINX加密。保存,退出,检查NGINX配置文件:#nginx-tnginx:theconfigurationfile/etc/nginx/nginx.confsyntaxisoknginx:configurationfile/etc/nginx/nginx.conftestissuccessful重启NGINX:#systemctlrestartnginxSummary按照上面的步骤,我们现在有一个Secure基于NGINX的Web服务器,具有Certbot和Let'sEncrypt提供的加密功能。这只是一个基本配置,当然你可以使用许多NGINX配置参数来个性化一切,但这取决于特定的Web服务器要求。