没有域名如何申请 https
温馨提示:这篇文章已超过205天没有更新,请注意相关的内容是否还可用!
无需域名,轻松申请 HTTPS**
随着互联网的发展,网站安全已经成为了一个日益重要的问题,HTTPS(超文本传输安全协议)可以确保客户端和服务器之间的通信是加密的,从而保护用户的隐私和数据安全,许多人认为申请 HTTPS 需要一个域名,但实际上并非如此,我们将探讨如何在没有域名的情况下申请 HTTPS。
理解 HTTPS
在开始之前,我们先来了解一下 HTTPS 的工作原理,当用户在浏览器中输入一个 URL 并按下回车键时,浏览器会向服务器发送一个请求,服务器接收到请求后,会返回一个响应,其中包含了要显示给用户的网页内容,这个过程中,数据是以明文形式传输的,任何人都可以截获并读取这些数据。
为了解决这个问题,HTTPS 使用了加密技术,当浏览器向服务器发送请求时,服务器会返回一个证书,证书包含了服务器的公钥,浏览器会验证证书的有效性,并使用服务器的公钥对请求进行加密,服务器接收到加密后的请求后,使用私钥对其进行解密,从而保证了数据的安全性。
使用 Let's Encrypt
Let's Encrypt 是一个免费的、自动化的证书颁发机构,它可以为网站颁发 HTTPS 证书,与传统的证书颁发机构不同,Let's Encrypt 不需要用户提供域名,只需要一个有效的电子邮件地址即可。
要使用 Let's Encrypt,你需要安装一个支持 Let's Encrypt 的客户端,有许多客户端可供选择,包括 Certbot、ACME.sh 等,我们将使用 Certbot。
安装 Certbot
Certbot 是一个命令行工具,可用于在各种操作系统上安装和管理 Let's Encrypt 证书,要安装 Certbot,请按照以下步骤操作:
- 打开终端或命令提示符。
- 输入以下命令以安装 Certbot:
sudo apt-get updatesudo apt-get install software-properties-commonsudo add-apt-repository universesudo apt-get updatesudo apt-get install python-certbot-nginx安装完成后,输入以下命令以启动 Certbot:
certbot申请证书
你可以使用 Certbot 申请证书了,请按照以下步骤操作:
- 打开终端或命令提示符。
- 输入以下命令以申请证书:
sudo certbot --nginx
Certbot 将提示你选择要申请证书的域名,如果你没有域名,可以选择“无”。
Certbot 将提示你选择要使用的协议,请选择“HTTP-01”。
Certbot 将提示你在你的网站上创建一个文件或添加一个 TXT 记录,请按照提示操作。
完成后,Certbot 将自动申请证书并将其安装到你的网站上。
配置 Nginx
你已经成功申请了证书,但还需要将其配置到 Nginx 服务器中,请按照以下步骤操作:
打开 Nginx 配置文件。
sudo nano /etc/nginx/sites-available/default在文件中添加以下内容:
server { listen 443 ssl; server_name your_domain.com; ssl_certificate /path/to/certificate/fullchain.pem; ssl_certificate_key /path/to/certificate/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_prefer_server_ciphers on; location / { root /var/www/html; index index.html index.htm; }}请将“your_domain.com”替换为你的域名,将“/path/to/certificate/fullchain.pem”和“/path/to/certificate/privkey.pem”替换为你的证书文件的路径。
保存并关闭文件。
重启 Nginx 服务器。
sudo systemctl restart nginx测试 HTTPS
你已经成功申请了证书并将其配置到 Nginx 服务器中,你可以使用以下命令测试 HTTPS 是否正常工作:
curl -v https://your_domain.com如果一切正常,你应该能够看到类似于以下内容的输出:
* Rebuilt URL to: https://your_domain.com/* Trying 127.0.0.1...* TCP_NODELAY set* Connected to your_domain.com (127.0.0.1) port 443 (#0)* ALPN, offering h2* ALPN, offering http/1.1* successfully set certificate verify locations:* CAfile: /etc/ssl/certs/ca-certificates.crt CApath: /etc/ssl/certs* TLSv1.2 (OUT), TLS handshake, Client hello (1):* TLSv1.2 (IN), TLS handshake, Server hello (2):* TLSv1.2 (IN), TLS handshake, Encrypted Extensions (8):* TLSv1.2 (IN), TLS handshake, Certificate (11):* TLSv1.2 (IN), TLS handshake, CERT verify (15):* TLSv1.2 (IN), TLS handshake, Finished (20):* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256* ALPN, server accepted to use h2* Server certificate:* subject: CN=your_domain.com* start date: Jun 25 04:00:00 2023 GMT* expire date: Sep 21 04:00:00 2023 GMT* subjectAltName: host "your_domain.com" matched cert's "CN=your_domain.com"* issuer: C=US; O=Let's Encrypt; CN=R3* SSL certificate verify ok.> GET / HTTP/1.1> Host: your_domain.com> User-Agent: curl/7.80.0> Accept: */*>< HTTP/1.1 200 OK< Server: nginx/1.23.0< Date: Tue, 27 Jun 2023 12:05:04 GMT< Content-Type: text/html; charset=UTF-8< Content-Length: 1684< Connection: keep-alive< X-Powered-By: PHP/8.2.0<<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">Your Website</title></head><body><h1>Hello, World!</h1></body></html>* Connection #0 to host your_domain.com left intact如果看到类似于“Hello, World!”的输出,那么恭喜你,你的网站已经成功启用了 HTTPS。
我们探讨了如何在没有域名的情况下申请 HTTPS,虽然没有域名可能会给一些人带来困扰,但实际上,你可以使用 Let's Encrypt 申请免费的证书,并在不需要域名的情况下启用 HTTPS,这对于那些想要保护用户隐私和数据安全的网站来说,是一个非常有用的解决方案。
发布于:2025-04-17,除非注明,否则均为原创文章,转载请注明出处。