• 精创网络
  • 精创网络
  • 首页
  • 产品优势
  • 产品价格
  • 产品功能
  • 关于我们
  • 在线客服
  • 登录
  • DDoS防御和CC防御
  • 精创网络云防护,专注于大流量DDoS防御和CC防御。可防止SQL注入,以及XSS等网站安全漏洞的利用。
  • 免费试用
  • 新闻中心
  • 关于我们
  • 资讯动态
  • 帮助文档
  • 白名单保护
  • 常见问题
  • 政策协议
  • 帮助文档
  • Ubuntu使用OpenSSL生成证书为网站启用HTTPS
  • 来源:www.jcwlyf.com更新时间:2025-01-28
  • 在当今互联网时代,网站的安全性变得越来越重要,尤其是对于那些需要处理敏感信息的站点。启用HTTPS(Hypertext Transfer Protocol Secure)能够确保用户与网站之间的通信加密,从而防止数据被中途窃取或篡改。为了启用HTTPS,我们需要为网站生成SSL/TLS证书,本文将介绍如何在Ubuntu系统中使用OpenSSL生成证书并为网站启用HTTPS。通过这篇文章,你将能够了解从安装OpenSSL到配置Nginx或Apache Web服务器等详细步骤。

    1. 安装OpenSSL

    在开始之前,首先需要确保你已经在Ubuntu系统中安装了OpenSSL。OpenSSL是一个强大的工具,可以用于生成证书、管理密钥等操作。默认情况下,Ubuntu通常会安装OpenSSL,但如果没有安装,你可以通过以下命令来安装:

    sudo apt update
    sudo apt install openssl

    安装完成后,你可以使用以下命令来检查OpenSSL的版本,确认安装是否成功:

    openssl version

    如果安装成功,你将看到类似于"OpenSSL 1.1.1f 31 Mar 2020"的输出信息。

    2. 生成自签名证书

    对于开发环境或者测试站点,你可以生成一个自签名证书。这种证书不会受到浏览器信任,但它仍然能加密通信。在生产环境中,我们建议使用由受信任CA(证书颁发机构)签发的证书,但生成自签名证书是学习和测试HTTPS的好方法。

    要生成自签名证书,你需要创建一个私钥文件和一个证书签名请求(CSR)。然后,你将使用私钥文件和CSR来生成证书。以下是生成自签名证书的步骤:

    2.1 创建私钥文件

    首先,创建一个私钥文件(例如:"server.key")。私钥是加密和解密操作的核心,因此必须妥善保管。

    openssl genpkey -algorithm RSA -out server.key -aes256

    这条命令会生成一个2048位的RSA私钥,并使用AES-256加密保护它。系统会要求你输入一个密码来保护私钥文件。你也可以选择不加密私钥,方法是去掉"-aes256"选项。

    2.2 创建证书签名请求(CSR)

    证书签名请求(CSR)是一个包含公钥和其他站点信息(如域名、公司名等)的文件,通常由CA用来生成有效证书。尽管我们这里使用的是自签名证书,但仍然需要生成一个CSR文件:

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

    运行该命令时,系统会要求你输入一些信息,包括国家、地区、公司名、通用名称(即网站的域名)等。请确保填写的信息准确无误,尤其是“Common Name”字段,它应该与你网站的域名一致。

    2.3 生成自签名证书

    现在,使用CSR和私钥文件生成自签名证书。你可以指定证书的有效期(例如365天)。以下命令将生成一个名为"server.crt"的证书文件:

    openssl x509 -req -in server.csr -signkey server.key -out server.crt -days 365

    这样,你就完成了自签名证书的生成。证书的有效期为365天,到期后你需要重新生成证书。

    3. 配置Nginx启用HTTPS

    在Ubuntu系统上,Nginx是一个非常常用的Web服务器。下面,我们将介绍如何在Nginx上配置HTTPS,使用刚才生成的自签名证书。

    3.1 安装Nginx

    如果你还没有安装Nginx,可以通过以下命令进行安装:

    sudo apt install nginx

    安装完成后,你可以使用以下命令启动Nginx服务:

    sudo systemctl start nginx

    3.2 配置Nginx启用HTTPS

    接下来,打开Nginx配置文件进行修改。Nginx的默认配置文件通常位于"/etc/nginx/sites-available/default"。使用文本编辑器(如"nano")打开该文件:

    sudo nano /etc/nginx/sites-available/default

    在配置文件中找到"server"块,修改或添加以下内容以启用HTTPS:

    server {
        listen 80;
        server_name yourdomain.com;
        return 301 https://$host$request_uri;
    }
    
    server {
        listen 443 ssl;
        server_name yourdomain.com;
    
        ssl_certificate /path/to/server.crt;
        ssl_certificate_key /path/to/server.key;
    
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
    
        location / {
            root /var/www/html;
            index index.html index.htm;
        }
    }

    在上面的配置中,"server_name"应替换为你自己的域名,"ssl_certificate"和"ssl_certificate_key"分别指向你之前生成的证书和私钥文件。

    修改完成后,保存并退出编辑器。然后,通过以下命令检查Nginx配置文件的语法是否正确:

    sudo nginx -t

    如果配置正确,重新加载Nginx使更改生效:

    sudo systemctl reload nginx

    现在,Nginx已经启用了HTTPS,你可以通过访问"https://yourdomain.com"来验证是否成功。

    4. 配置Apache启用HTTPS

    如果你使用的是Apache Web服务器,配置HTTPS的步骤也非常类似。下面介绍如何在Apache中配置SSL/TLS证书。

    4.1 安装Apache和SSL模块

    首先,确保已经安装了Apache和SSL模块。在Ubuntu上,你可以通过以下命令安装:

    sudo apt install apache2
    sudo a2enmod ssl

    安装完成后,重新启动Apache服务:

    sudo systemctl restart apache2

    4.2 配置Apache启用HTTPS

    接下来,编辑Apache的配置文件,启用SSL:

    sudo nano /etc/apache2/sites-available/default-ssl.conf

    在配置文件中,修改以下部分以指向你生成的证书和私钥文件:

    <VirtualHost _default_:443>
        ServerAdmin webmaster@localhost
        ServerName yourdomain.com
    
        DocumentRoot /var/www/html
    
        SSLEngine on
        SSLCertificateFile /path/to/server.crt
        SSLCertificateKeyFile /path/to/server.key
    
        <Directory /var/www/html>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>
    </VirtualHost>

    完成后,保存文件并退出。然后,启用SSL站点并重新加载Apache配置:

    sudo a2ensite default-ssl.conf
    sudo systemctl reload apache2

    此时,Apache已经启用了HTTPS,你可以访问"https://yourdomain.com"进行测试。

    5. 使用Let’s Encrypt获取免费的SSL证书

    如果你需要为生产环境提供HTTPS,建议使用Let’s Encrypt,这是一个免费的证书颁发机构,提供由受信任CA签发的SSL/TLS证书。你可以通过Certbot工具轻松地为你的网站申请证书。安装Certbot后,只需运行以下命令:

    sudo apt install certbot python3-certbot-nginx

    然后,通过Certbot自动配置HTTPS:

    sudo certbot --nginx

    按照提示完成配置后,Certbot将自动为你的网站申请证书并配置Nginx。证书会在每90天更新一次,Certbot也会为你自动续期。

  • 关于我们
  • 关于我们
  • 服务条款
  • 隐私政策
  • 新闻中心
  • 资讯动态
  • 帮助文档
  • 网站地图
  • 服务指南
  • 购买流程
  • 白名单保护
  • 联系我们
  • QQ咨询:189292897
  • 电话咨询:16725561188
  • 服务时间:7*24小时
  • 电子邮箱:admin@jcwlyf.com
  • 微信咨询
  • Copyright © 2025 All Rights Reserved
  • 精创网络版权所有
  • 皖ICP备2022000252号
  • 皖公网安备34072202000275号