域名、備案和HTTPS

peterjxl發表於2024-07-06

12.域名、備案和HTTPS

有了域名後,可以方便其他人記住並訪問,歷史上不乏大企業花大價錢購買域名的:

  • 京東域名換成 JD.com,並且說是為了防止百度吸引流量,為什麼?
  • 唯品會買下域名 VIP.COM 或花費千萬

域名提供商

如果想要域名,得去找一些域名註冊商去購買,目前基本各大雲伺服器廠商都支援域名的購買等:

  • 阿里:阿里雲官網
  • 騰訊:騰訊雲官網
  • 百度:百度智慧雲官網
  • 華為:華為雲官網
  • .....

自己挑選一個域名購買即可。

配置 DNS

有了域名後,下一步就是配置 DNS 了,這樣別人就可以透過域名來訪問你的伺服器了。以阿里云為例,簡單說明下怎麼配置:雲解析 DNS

在要配置 DNS 的地方,點選解析設定:

然後新增記錄:

然後是填寫記錄的值:

​​

什麼是記錄:簡單來說就是域名解析的型別,例如有如下型別:

  • A (Address) 記錄: 是用來指定主機名(或域名)對應的 IP 地址記錄。使用者可以將該域名下的網站伺服器指向到自己的 web server 上。同時也可以設定您域名的二級域名。
  • MX(Mail Exchanger)記錄是郵件交換記錄,它指向一個郵件伺服器,用於電子郵件系統發郵件時根據 收信人的地址字尾來定位郵件伺服器。例如,當 Internet 上的某使用者要發一封信給 user@mydomain.com 時,該使用者的郵件系統透過 DNS 查詢 mydomain.com 這個域名的 MX 記錄,如果 MX 記錄存在, 使用者計算機就將郵件傳送到 MX 記錄所指定的郵件伺服器上。
  • NS 記錄:ns 記錄全稱為 Name Server 是一種域名伺服器記錄,用來明確當前你的域名是由哪個 DNS 伺服器來進行解析的。
  • .........

比如使用者透過瀏覽器訪問你的網站,就會用 A 記錄;使用者發郵件給你,就會用 MX 記錄……不同的記錄有不同的作用。

比如,我們這裡新增 A 記錄,主機記錄寫 @,記錄值為你的伺服器 IP 地址,然後就可以透過域名訪問伺服器裡。例如訪問 peterjxl.com,就會解析為訪問 IP。

我們再新增一個 A 記錄,主機記錄寫 www,記錄值還是伺服器 IP,這樣使用者就可以訪問 www.peterjxl.com 來訪問我的伺服器了。

備案的概念

註冊了域名,並不代表你就可以使用了,在國內,得備案後才可以使用。如果你設定了 DNS 但是沒備案,一般會被域名註冊商馬上停止解析,得備案透過後才給你解析。

備案簡單來說就是讓國家稽核下你的網站,然後才可以使用域名,這是國家規定:

以下內容來自:網站備案_ICP 備案_備案遷移_備案-阿里雲

是否一定要備案?

ICP 備案主要看您的網站等網際網路資訊服務解析到的伺服器是否在中國內地(大陸),如果伺服器在中國內地(大陸),必須完成 ICP 備案才可對外提供服務。如果伺服器在中國香港、中國澳門、中國臺灣及其他國家和地區,則不需要進行工信部 ICP 備案,僅需要完成公安聯網備案。檢視備案的必要性

不進行 ICP 備案的影響

根據上述政策規定,解析至中國內地伺服器的網站等服務,必須完成 ICP 備案才可對外提供服務。* 如果您未在阿里雲提交過 ICP 備案,直接將域名解析至阿里雲中國內地伺服器上,將被阿里雲監測系統識別並阻斷網站的訪問服務,提示您需先完成備案操作。

如果您已經在其他接入商處申請過 ICP 備案,現在希望將域名解析至阿里雲中國內地伺服器上,根據政策要求,您需要將 ICP 備案資訊接入阿里雲。如果您沒有將 ICP 備案資訊接入阿里雲,將被阿里雲監測系統識別並阻斷網站的訪問服務,提示您需要將 ICP 備案資訊接入阿里雲。具體操作請參見接入備案流程

備案之前要做的事情

首先自己的網站得有內容,如果你網站啥內容都沒有,稽核是不會透過的,因為沒有內容可以稽核……

當年我就是搞了個 VuePress 首頁然後去提交備案,被退回了,我還打電話去問為什麼退回 🤣🤣🤣 .....

​​​

後面為了透過備案,我先臨時將自己的筆記匯入到了部落格上,備案透過後再細細整理網站的內容。

工信局備案

備案的過程大同小異,具體怎麼備案,得看域名註冊商的指引,例如阿里雲的備案相關的文件就很齊全:備案

在備案的時候請仔細閱讀下文件,備案也不難,就填幾個表單就可以了,工信局備案大概一週左右,透過或退回都有簡訊通知。

網站的名字也是需要注意的,不能起一些敏感的名字等,參考:填寫網站資訊(備案單個網站)

公安局備案

以下內容來自:ICP 備案後所需的後續流程介紹_備案-阿里雲幫助中心

依據 計算機資訊網路國際聯網安全保護管理辦法 相關規定,各網站在工信部進行 ICP 備案成功後,需在網站開通之日起 30 日內提交公安聯網備案申請,詳情請參見公安聯網備案及登出

各地區使用者申請公安聯網備案請登入全國網際網路安全管理服務平臺提交公安聯網備案申請。

公安聯網備案稽核透過後,您需在 30 日內登入全國網際網路安全管理服務平臺,在您的已備案網站詳情中,複製網站公安機關備案號備案編號 HTML 程式碼,下載備案編號圖示,並編輯您的網頁原始碼將公安聯網備案資訊放置在網頁底部。

具體怎麼備案,可以參考:公安聯網備案資訊填寫指南

公安備案也參考域名註冊商提供的服務即可,比如阿里雲的文件中每個表單每個欄位怎麼填都有說明,也是填幾個表單就能完成備案;

不過需要注意的是,公安局備案退回或透過是沒有簡訊通知的,而且被退回需要在一段時間內重新提交,所以需要定期自行去公安局備案網站上檢視結果。

備案之後要做的事情

備案透過後,就需要將備案資訊放到網頁底部(別問為什麼,問就是國家規定),例如本部落格的底部:

以 VuePress 為例,我是在 config.themeConfig ​裡這樣配置的:

  //配置頁尾
  footer:{
    createYear: 2022,
    copyrightInfo: `<a href='https://beian.miit.gov.cn'>粵ICP備2022067627號-1</a>  
    <img src='https://image.peterjxl.com/blog/beian.png'>
    <a href='http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=44011302003646'>粵公網安備 44011302003646號</a>
    `
  },

有些 VuePress 主題(例如 vuepress-theme-hope)不支援自定義頁尾,需注意。

更改備案資訊

備案透過後,如果想要更改備案資訊(例如網站名字等),也可以在域名註冊商上面提交修改申請。注意同步修改公安備案資訊。

HTTPS

開啟 HTTPS 有很多好處,比如可以實現資料加密傳輸等,提高網站安全性,提供搜尋引擎權重,使其更容易被搜尋到等等。

購買證書

不同域名註冊商的話,購買的流程也不同。不過一般證書都比較便宜(一般不會用到萬用字元證書,很貴)。

阿里雲提供了免費證書可以使用,在每個自然年內,都可以透過 SSL 證書服務一次性申領 20 張免費證書。

訪問雲盾證書服務購買頁,選擇 「DV 單域名證書(免費試用)」,按照提示下單購買(訂單價格為 0 元)。

​​

登入 SSL 證書控制檯,選擇 「SSL 證書」 - 「免費證書」,點選「建立證書」,就會自動建立一個證書:

​​

在新建立的證書上,點選 「證書申請」,填寫證書相關的資訊....

注意免費證書繫結的域名,只能是普通域名,比如 peterjxl.com​ 或者 www.peterjxl.com​,所謂萬用字元域名,就是指以 *. 號開頭的域名,比如 *.peterjxl.com​,這樣的證書非常貴的,因為有這一個,所有子域名都可以用。

填寫後就是提交稽核了,一般幾分鐘內就可以完成稽核。

隨著時間的推移,購買的流程可能會有不同,具體怎麼購買以官網教程為準:購買 SSL 證書指南,實在不行問客服。

上傳證書到伺服器

證書狀態變為 「已簽發」後,我們就需要下載證書並上傳到伺服器上了:

由於我用的 Nginx 伺服器,因此這裡下載 Nginx 的(讀者如果用其他的伺服器軟體,就下載對應的):

然後解壓,並上傳到伺服器上,我的證書存放路徑:

$ll /opt/nginxrun/conf/cert/
total 24
-rw-r--r-- 1 root root 1675 Jul 26  2022 8183762_www.peterjxl.com.key
-rw-r--r-- 1 root root 4768 Jul 26  2022 8183762_www.peterjxl.com.pem
-rw-r--r-- 1 root root 1675 Nov 22 07:44 8852603_twikoo.peterjxl.com.key
-rw-r--r-- 1 root root 4752 Nov 22 07:44 8852603_twikoo.peterjxl.com.pem

修改 Nginx 配置

可以在下載證書頁面點選幫助,看看怎麼配置證書的: 在 Nginx 或 Tengine 伺服器上安裝證書

接下來我們修改 Nginx 配置,在 http 塊裡面新增一個 server 塊,以阿里雲文件的說明為例:

#以下屬性中,以ssl開頭的屬性表示與證書配置有關。
server {
    listen 443 ssl;
    #配置HTTPS的預設訪問埠為443。
    #如果未在此處配置HTTPS的預設訪問埠,可能會造成Nginx無法啟動。
    #如果您使用Nginx 1.15.0及以上版本,請使用listen 443 ssl代替listen 443和ssl on。
    server_name yourdomain;
    root html;
    index index.html index.htm;
    ssl_certificate cert/cert-file-name.pem;  
    ssl_certificate_key cert/cert-file-name.key; 
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    #表示使用的加密套件的型別。
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS協議的型別,您需要自行評估是否配置TLSv1.1協議。
    ssl_prefer_server_ciphers on;
    location / {
        root html;  #Web網站程式存放目錄。
        index index.html index.htm;
    }
}

我的 Nginx 完整配置:

worker_processes  1;
error_log  logs/error.log;
pid        logs/nginx.pid;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    sendfile        on;
    keepalive_timeout  65;

    #gzip  on;

    server {
		listen 443 ssl;
		server_name www.peterjxl.com;
		root /opt/myblog;
		index index.html;
		ssl_certificate cert/8183762_www.peterjxl.com.pem;  
		ssl_certificate_key cert/8183762_www.peterjxl.com.key; 
		ssl_session_timeout 5m;
		ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
		#表示使用的加密套件的型別。您需要自行評估是否配置TLSv1.1協議。
		ssl_prefer_server_ciphers on;
		location / {
             root   /opt/myblog;
             index  index.html index.htm;
        }

	}
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   /opt/myblog;
            index  index.html index.htm;
        }
    }
}

修改完後,記得重啟 Nginx:

systemctl restart nginx

http 重定向

對於原本的 http 請求,我們可以寫一個 rewrite 語句,重定向所有的 http 請求到 https 請求:

server {
	listen 80;
	server_name peterjxl.com; #需要將yourdomain替換成證書繫結的域名。
	rewrite ^(.*)$ https://www.peterjxl.com; #將所有HTTP請求透過rewrite指令重定向到HTTPS。
	location / {
		index index.html index.htm;
	}
}


# HTTPS埠
server {
	listen 443 ssl;
	server_name www.peterjxl.com;
	root /opt/myblog;
	index index.html;
	ssl_certificate 	/opt/nginxrun/conf/cert/8183762_www.peterjxl.com.pem;  
	ssl_certificate_key /opt/nginxrun/conf/cert/8183762_www.peterjxl.com.key; 
	ssl_session_timeout 5m;
	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;

	#表示使用的加密套件的型別。您需要自行評估是否配置TLSv1.1協議。

	ssl_prefer_server_ciphers on;
	location / {
		 root   /opt/myblog;
		 index  index.html index.htm;
	}
}

開啟 gzip 壓縮,可以使得網站的載入速度變快:

# HTTPS埠
server {
	listen 443 ssl;
	server_name www.peterjxl.com;
	.......其他配置,這裡忽略

        # 這裡是新增的 gzip 配置
	gzip on;
	gzip_min_length 1k;
	gzip_comp_level 6;
	gzip_types application/atom+xml application/geo+json application/javascript application/x-javascript application/json application/ld+json application/manifest+json application/rdf+xml application/rss+xml application/xhtml+xml application/xml font/eot font/otf font/ttf image/svg+xml text/css text/javascript text/plain text/xml;

}

開啟埠

阿里雲伺服器預設沒有開啟 HTTPS 監聽的 443 埠(很多雲伺服器都沒有開啟的),所以需要到 ECS 管理控制檯 的「安全組」頁面,開放 443 埠:

源一般配置為 0.0.0.0,指允許所有 IP,也就是所有人都可以公開訪問你的部落格:

訪問自己的網站,如果網頁位址列出現小鎖標誌,表示證書已經安裝成功:

最後

備案並不麻煩,就單純填幾個表單提交即可,如果有什麼問題也可以問域名註冊商的客服。

如果你使用 GitHub Pages 或者 Gitee Pages,則一般不用備案也可,請讀者自行斟酌。

參考

  • 域名解析--什麼是 A 記錄、別名記錄(CNAME)、MX 記錄、TXT 記錄、NS 記錄 -愛名網 22.CN
  • 阿里雲域名配置 HTTPS - 知乎

相關文章