網際網路中安全驗證的重要性不言而喻,今天就講下https伺服器的搭建,最後會測試從瀏覽器到訪問經過安全驗證的伺服器。廢話少數,進入正題。
先普及下檔案字尾的意義:
*.key:金鑰檔案,一般是ssl中的私鑰;
*.csr:證書請求檔案,裡面包含公鑰和其他資訊,通過簽名後就可以生成證書;
*.crt, *.cert:證書檔案,包含公鑰,簽名和其他需要認證的資訊,比如主機名稱(ip)等。
*.pem:裡面一般包含私鑰和證書的資訊。
再普及下ssl證書的意義:
1,ca證書,也叫根證書或者中間級證書。如果是單向https認證的話,該證書是可選的。不安裝ca證書的話,瀏覽器預設是不安全的。
2,伺服器證書,必選項。通過key,證書請求檔案csr,再通過ca證書簽名,生成伺服器證書。
3,客戶端證書,可選項。若有客戶端證書則是雙向https驗證。
./config --prefix=/usr/local --openssldir=/usr/local/openssl
make
make install
安裝過程中遇到了載入不到庫的錯誤,解決方案如下:
sudo ln -s /usr/local/lib/libssl.so.1.1 /usr/lib/libssl.so.1.1; sudo ln -s /usr/local/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1)
./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre
make
make install
開啟服務:sudo /usr/local/apache/bin/apachectl start/stop/restart.
在/usr/local/apache/htdocs建立test.html檔案,
開啟瀏覽器localhost/test.html可以測試下apache是否安裝成功
mkdir /usr/local/apache/conf/ssl.crt
cp /usr/local/ssl/misc/ca.pl /usr/local/apache/conf/ssl.crt
cd /usr/local/apache/conf/ssl.crt
./ca.pl
-newca
生成結果:democa/private/cakey.pem是ca證書的私鑰檔案,democa/cacert.pem是ca證書。
openssl genrsa -des3 -out server.key 1024
輸入加密密碼,用 128 位 rsa 演算法生成金鑰,得到 server.key 檔案。
openssl req -new -key server.key -out server.csr
csr( certificate signing request)是乙個證書簽名請求,在申請證書之前,首先要在伺服器上生成 csr,並將其提交給 ca 認證中心,ca 才能簽發 ssl 伺服器證書。
也可以認為,csr 就是乙個在伺服器上生成的證書。
如果不使用 ca 證書簽名的話,用如下方式生成:
openssl req -x509 -days 1024 -key server.key -in server.csr > server.crt
如果使用 ca 證書簽名,用 openssl 提供的工具 ca.sh 生成伺服器證書:
mv server.csr newreq.pem
./ca.pl -sign
mv newcert.pem server.crt
簽名證書後,可通過如下命令可檢視伺服器證書的內容:
openssl x509 -noout -text -in server.crt
可通過如下命令驗證伺服器證書:
openssl verify -cafile ca.crt server.crt
openssl genrsa -des3 -out client.key 1024
openssl req -new -key client.key -out client.csr
openssl ca -in client.csr -out client.crt
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx
開啟: loadmodule ssl_module modules/mod_ssl.so
去掉以下語句的注釋, include conf/extra/httpd-ssl.cfg
根據實際修改如下:
sslcertificatefile "/usr/local/apache/conf/ssl.crt/server.crt"
sslcertificatekeyfile "/usr/local/apache/conf/ssl.crt/server.key"
sslcertificatechainfile "/usr/local/apache/conf/ssl.crt/ca.crt"
sslcacertificatepath "/usr/local/apache/conf/ssl.crt"
sslcacertificatefile "/usr/local/apache/conf/ssl.crt/cacert.pem"等
最後把client.pfx匯入瀏覽器就ok了
測試結果如圖:
nginx搭建https伺服器
https hypertext transfer protocol over secure socket layer 是以安全為目標的http通道,簡單來講就是http的安全版。即http下加入ssl層,https的安全基礎是ssl,因此加密的詳細內容就需要ssl。它是乙個uri scheme 抽象...
Nginx搭建https伺服器
https簡介 https hypertext transfer protocol over secure socket layer 是以安全為目標的http通道,簡單來講就是http的安全版。即http下加入ssl層,https的安全基礎是ssl,因此加密的詳細內容就需要ssl。它是乙個uri s...
nginx 搭建https伺服器
安裝在之前的文章中已經寫過了。但是之前的安裝出現了錯誤導致https沒有安裝成功。所以這裡提一下大致的流程以及問題 openssl v ersion 命令用來列印版本以及 openssl 其他各種資訊。用法 cpp view plain copy openssl version a v b o f ...