新手一步步搭建自己的網站(服務器->域名->CA認證)


搭建自己的服務器,過程大致分為3步:

* 購買服務器,配置系統環境

* 獲得域名

* CA認證

 

 

1、購買服務器,配置系統環境

經過比較,阿里雲、騰訊雲都比較貴,咱們來找個便宜的。

Bandwagon主機標志

 配置不用太高,可以說是相當便宜了,我買的時候是$19.9(備注:前一段時間訪問不了,要翻牆,現在有可以了,其實我是用來掛VPN的)

現在漲價了,我那最低配置沒有了

點擊order進入購買頁面

 

嫌貴的話可以買個半年的

支持PayPal和Alipay支付,或者用信用卡(支持美元)

 

OK,到此服務器到手了

 登錄服務器

可以通過 kiwivm控制面板 來管理

當然也可以遠程通過SSH來訪問,默認是支持SSH遠程登錄的

cat /etc/hosts.allow

為了安全,可以限制IP

vi /etc/hosts.allow

#下面為允許通過制定ip訪問服務器
sshd:xxx.xxx.xxx.xxx:allow
sshd:xxx.xxx.xxx.xxx:allow
sshd:172.16.0.0/255.255.0.0:allow
sshd:192.168.0.0/255.255.0.0:allow
 
SSH登錄控制台命令:

ssh root@xxx.xxx.xxx.xxx -p xxx -o PubkeyAuthentication=no

IP和端口在 https://kiwivm.64clouds.com/main.php

有人會問,為什么SSH命令后面要加 -o PubkeyAuthentication=no

 用MacOS登錄時,可能會出現

Too many authentication failures for root

 

配置系統運行環境

配置Java

配置MySQL

 

2、獲得域名

Freenom 提供免費頂級域名包括:tk,ml,ga,cf,gq

申請流程:

注冊用戶后登陸,然后查詢並選擇一個域名

 

 

結算

現在我們已經擁有自己的頂級域名了,可以在 MyDomains 查看

 

OK,免費域名到手了,但是你能訪問嗎?域名是用來代替難以記憶的IP的,所以要綁定你服務器IP,這就是所謂的域名解析了,可以使用freenom域名解析,也可以用阿里騰訊的域名解析。

 

freenom域名解析

 在上圖你的域名列表中,最右側有個 Manage Domain(管理域名選項),你點擊該選項,就可以進入域名管理界面:

這里使用默認的 DNS 服務器,不做修改

 

點擊 Manage Freenom DNS 選項,給自己的域名綁定ip 比如:

 

訪問:http://www.woodtechblog.tk/ 得到的卻是這個

繼續研究,原因是 freenom 的 DNS 解析對國內不太友好,可能要 1小時 才能生效,受不了的可以用國內的 DNS 服務 CloudXNS 或 DNSPod

但是我就是要用 freenom 怎么辦?

使用 CloudXNS 接管 Freenom 的免費域名解析,加快國內生效速度!

偷偷告訴你,我的域名是10分鍾后生效的 

錯誤提示語從 找不到IP 變成了 拒絕了我們的請求,說明域名解析成功。

but,這也不是我想要的答案啊(廢話:DNS就是把域名解析成ip,返回訪問ip,直接用ip不也是這個結果嗎)

第一步中,教你了怎么購買服務器,並且配置好了Java、MySQL

創建一個SpringBoot應用,為了方便,這里提供一個可用的SpringBoot簡單應用

因為cnblogs不能上傳jar類型的文件,所以百度雲下載 hello-0.0.1-SNAPSHOT.jar

上傳桌面上的hello-0.0.1-SNAPSHOT.jar文件至遠程服務器xxx.xxx.xxx.xxx的/root/data/目錄中

scp -o PubkeyAuthentication=no -P 22 ~/Desktop/hello-0.0.1-SNAPSHOT.jar root@xxx.xxx.xxx.xxx:/root/data/

后台運行應用

nohup java -jar /root/data/hello-0.0.1-SNAPSHOT.jar &

控制台查看日志

tail -f -n 100 nohup

[root@wood data]# tail -f -n 100 nohup.out 

 

  .   ____          _            __ _ _

 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \

( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \

 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )

  '  |____| .__|_| |_|_| |_\__, | / / / /

 =========|_|==============|___/=/_/_/_/

 :: Spring Boot ::        (v2.1.2.RELEASE)

 

訪問 http://www.woodtechblog.tk:8080/hello/yourname

到此,其實網站已經搭建好了

but,你看瀏覽器地址欄前面有三個字 ”不安全“,看着不爽怎么辦?

加一個SSL證書,變成HTTPS,接着看CA認證。

 

 

3、CA認證

SSL證書,用於加密HTTP協議,也就是HTTPS。隨着淘寶、百度等網站紛紛實現全站Https加密訪問,搜索引擎對於Https更加友好,加上互聯網上越來越多的人重視隱私安全,站長們給網站添加SSL證書似乎成為了一種趨勢。

申請免費的DV證書,為什么是DV而不是OV/EV,看這里 -> DV型、OV型、EV型證書的主要區別

Let's Encrypt 是國外一個公共的免費SSL項目,安裝部署簡單、方便,目前Cpanel、Oneinstack等面板都已經集成了Let's Encrypt一鍵申請安裝,網上也有不少的利用Let's Encrypt開源的特性制作的在線免費SSL證書申請網站,總之Let's Encrypt得到大家的認可。

 

輸入郵箱地址,生成的證書文件

but,然並卵,因為文檔不齊全,如果是新手又對域名、DNS、SSL、CA、Linux不熟悉,會遇到很多坑的。

現在我來介紹另一個獲取免費SSL的網站 https://www.sslforfree.com/

域名驗證分三步

  • 下載文件並上傳至服務器指定目錄,點擊驗證
  • 上傳域名驗證文件至宿主機
  • 下載免費的free ssl certificate

准備工作

安裝Apache(httpd)

安裝httpd服務

yum install httpd 

配置證書需要安裝SSL模塊即mod_ssl:

yum install mod_ssl openssl

 

service httpd start

service httpd stop

啟動Apache服務器 service httpd start,訪問 http://www.woodtechblog.tk/ 

 

OK,接下來,按照下圖步驟操作

在服務器創建目錄

cd /var/www/html

mkdir -p .well-known/acme-challenge 

 

如何將文件上傳到服務器/var/www/html/.well-known/acme-challenge 就不多說了,參考第二部分的命令SSH的 scp 上傳文件命令

上傳完成后重啟一下服務 service httpd restart ,確保兩個地址都可以訪問 

 

如果第二個鏈接 http://woodtechblog.tk/.well-known/acme-challenge/xxx 訪問不了,看下圖

5分鍾之后就可以訪問了 http://woodtechblog.tk/ 和 http://www.woodtechblog.tk/

----------------------------------------------------------------------

強行解釋一波兒(可以跳過)

A記錄:將域名指向一個IPv4地址(例如:10.10.10.10),需要增加A記錄

CNAME記錄:如果將域名指向一個域名,實現與被指向域名相同的訪問效果,需要增加CNAME記錄

MX記錄:建立電子郵箱服務,將指向郵件服務器地址,需要設置MX記錄

NS記錄:域名解析服務器記錄,如果要將子域名指定某個域名服務器來解析,需要設置NS記錄

TXT記錄:可任意填寫(可為空),通常用做SPF記錄(反垃圾郵件)使用

AAAA記錄:將主機名(或域名)指向一個IPv6地址(例如:ff03:0:0:0:0:0:0:c1),需要添加AAAA記錄

SRV記錄:記錄了哪台計算機提供了哪個服務。格式為:服務的名字.協議的類型(例如:_example-server._tcp)

顯性URL:將域名指向一個http(s)協議地址,訪問域名時,自動跳轉至目標地址(例如:將www.net.cn顯性轉發到www.hichina.com后,訪問www.net.cn時,地址欄顯示的地址為:www.hichina.com)。

隱性URL:與顯性URL類似,但隱性轉發會隱藏真實的目標地址(例如:將www.net.cn隱性轉發到www.hichina.com后,訪問www.net.cn時,地址欄顯示的地址仍然為:www.net.cn)。

 

主機記錄就是域名前綴,常見用法有:
www:解析后的域名為www.aliyun.com。
@:直接解析主域名 aliyun.com。
*:泛解析,匹配其他所有域名 *.aliyun.com。
mail:將域名解析為mail.aliyun.com,通常用於解析郵箱服務器。
二級域名:如:abc.aliyun.com,填寫abc。
手機網站:如:m.aliyun.com,填寫m。
顯性URL:不支持泛解析(泛解析:將所有子域名解析到同一地址)

---------------------------------------------------------------------- 

 

這里需要注意的是“I Have My Own CSR” :

  • 不勾選 = 網站自動生成“密鑰”+“證書”
  • 勾選 = 我們通過Xshell等工具自行生成密鑰,網站只提供證書

----------------------------------------------------------------------

SSL證書的生成與簽名(不勾選可以跳過)

KEY : 私鑰文件,決定ssl安全的基礎
CSR : 證書請求文件,包含公鑰和證書信息
CA : 中級證書頒發機構,一般是可信的第三方,CA證書會驗證公鑰是否被認證
root CA:通過它的私鑰對中級機構提交的CSR進行了簽名

申請ssl證書需要用到openssl,linux系統中默認會安裝,手動安裝openssl:

yum install -y openssl openssl-devel

一.生成私鑰

私鑰是SSL安全性的基礎,使用RSA算法生成,只有證書申請者持有,即使CA也沒有對私鑰的訪問權限,應妥善保管。私鑰長度決定其安全性,2009年768位RSA已被破解,1024位RSA短期內是安全的,但隨着計算機越來越快,已不足以抵御攻擊,為了安全起見應盡量使用2048位RSA,生成2048位私鑰:

openssl genrsa -out server.key 2048

 

二.生成CSR

證書簽名請求文件(CSR)中包含了公鑰和證書的詳細信息,將CSR發送給CA認證后就會得到數字證書或證書鏈,生成CSR文件

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

 

按照提示輸入:國家、省份、城市、組織名、部門、公共名稱、郵件地址等,最后的extra信息不要填寫,個人用戶也可以使用默認或留空,注意‘Common Name’是要使用ssl證書的域名
驗證CSR文件信息:

openssl req -noout -text -in server.csr

確認信息正確就可以提交給CA進行認證,CA會根據你的CSR文件進行簽名,之后頒發數字證書,該數字證書和私鑰就可以部署到服務器了。

下載服務器 server.csr 文件,上傳到 mianfeissl 認證,涉及到常用的SSH命令,傳送門 -> SSH常用命令

scp -o PubkeyAuthentication=no -P 端口 root@服務器IP地址:/root/server.csr ~/Desktop/

呢嗎,原來這里是黏貼文件內容,居然去學習了SSH常用命令

----------------------------------------------------------------------

 

 

  

下載的sslforfree.zip包含以下3個文件

certificate.crt  

private.key 

ca_bundle.crt  

直接上傳sslforfree.zip至服務器/etc/httpd/目錄下並解壓 

sch 如何上傳文件? 見上文

解壓文件 unzip sslforfree.zip 如果unzip命令找不到,就 yum install unzip

 

Apache httpd 2.4 SSL 配置

--------------------------------------------------------------------------------------

配置SSL證書實現HTTPS (Apache httpd 2.4)

配置/etc/httpd/conf.d/ssl.conf 

#LoadModule ssl_module modules/mod_ssl.so
#Include conf/extra/httpd-ssl.conf 
刪除行首的配置語句注釋符號“#” 


打開apache安裝目錄下conf/extra目錄中的httpd-ssl.conf文件 
在配置文件中查找以下配置語句 
SSLCertificateFile conf/ssl.crt/server.crt 將服務器證書配置到該路徑下 
SSLCertificateKeyFile conf/ssl.key/server.key 將服務器證書私鑰配置到該路徑下 
#SSLCertificateChainFile conf/ssl.crt/ca.crt 刪除行首的“#”號注釋符,並將中級CA證書 ca.crt(從訂單頁面下載的)配置到該路徑下 保存退出,並重啟Apache。

重啟方式: 進入Apache安裝目錄下的bin目錄,運行如下命令 ./apachectl -k stop ./apachectl -k start 通過https方式訪問您的站點,測試站點證書的安裝配置。

--------------------------------------------------------------------------------------

 

Apache httpd 2.2 SSL 配置

Apache httpd 2.2 和 Apache httpd 2.4 的配置稍有不同,原理都是一樣的

/etc/httpd/conf/httpd.conf 是httpd服務器配置文件

/etc/httpd/conf.d/ssl.conf 是httpd SSL 配置文件,httpd.conf 引用了ssl.conf

多域名SSL配置時

translate.google.com  -> translate-google-com-ssl.conf

mail.google.com    -> mail-google-com-ssl.conf

然后在 httpd.conf 中 include 包含進去就行

ssl.conf具體配置如下

----------------------- 

LoadModule ssl_module modules/mod_ssl.so

 

Listen 443

 

SSLPassPhraseDialog  builtin

 

SSLSessionCache         shmcb:/var/cache/mod_ssl/scache(512000)

SSLSessionCacheTimeout  300

 

SSLMutex default

 

SSLRandomSeed startup file:/dev/urandom  256

SSLRandomSeed connect builtin

 

SSLCryptoDevice builtin

 

<VirtualHost _default_:443>

 

DocumentRoot "/var/www/html"

ServerName woodtechblog.tk:443

 

ErrorLog logs/ssl_error_log

TransferLog logs/ssl_access_log

LogLevel warn

 

SSLEngine on

 

SSLProtocol all -SSLv2

 

SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES

 

SSLCertificateFile /etc/httpd/certificate.crt

 

SSLCertificateKeyFile /etc/httpd/private.key

 

SSLCACertificateFile /etc/httpd/ca_bundle.crt

 

 

<Files ~ "\.(cgi|shtml|phtml|php3?)$">

    SSLOptions +StdEnvVars

</Files>

<Directory "/var/www/cgi-bin">

    SSLOptions +StdEnvVars

</Directory>

 

SetEnvIf User-Agent ".*MSIE.*" \

         nokeepalive ssl-unclean-shutdown \

         downgrade-1.0 force-response-1.0

 

CustomLog logs/ssl_request_log \

          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

 

</VirtualHost>

-----------------------

 

https://www.cnblogs.com/wood-life/

 

------------------------------------------------------

思考題:https://www.woodtechblog.tk:8080/hello/小伍 訪問不了?

Apache(httpd)實現反向代理

------------------------------------------------------

 

 

轉載請注明出處,謝謝!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM