在當(dāng)今的互聯(lián)網(wǎng)環(huán)境中,網(wǎng)絡(luò)安全和數(shù)據(jù)隱私的重要性日益提升,為了保護(hù)您的網(wǎng)站免受未經(jīng)授權(quán)訪問(wèn)、惡意軟件攻擊以及釣魚等威脅,使用SSL(Secure Sockets Layer/Transport Layer Security)證書是一個(gè)非常重要的步驟,本文將詳細(xì)介紹如何在Linux系統(tǒng)上安裝LNMP(Linux Nginx, MySQL, PHP)環(huán)境,并配置SSL證書。
一、準(zhǔn)備工作
系統(tǒng)環(huán)境
確保您的服務(wù)器已安裝了以下基本軟件包:
Nginx
MySQL
PHP
PHP擴(kuò)展(如curl、openssl等)
大多數(shù)現(xiàn)代Linux發(fā)行版默認(rèn)都包含這些組件,但請(qǐng)確認(rèn)它們是否已正確安裝,如果未安裝,可以通過(guò)包管理器進(jìn)行安裝,在Ubuntu或Debian系統(tǒng)中,可以使用apt-get
命令來(lái)安裝:
sudo apt-get update sudo apt-get install nginx mysql-server php-fpm php-mysql php-curl php-xml openssl
對(duì)于CentOS,可以使用yum
命令:
sudo yum install -y nginx mariadb-server php-fpm php-mysqlnd php-curl php-xml openssl
二、安裝LNMP環(huán)境
安裝LNMP
我們需要從源代碼安裝Nginx、MySQL和PHP,以下是詳細(xì)的安裝步驟:
Nginx
下載Nginx源碼 wget http://nginx.org/download/nginx-1.18.0.tar.gz tar -zxvf nginx-1.18.0.tar.gz cd nginx-1.18.0 配置編譯選項(xiàng) ./configure --prefix=/usr/local/nginx \ --sbin-path=/usr/sbin/nginx \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --pid-path=/run/nginx.pid \ --with-http_ssl_module \ --with-compat \ --add-module=../ngx_http_substitutions_filters_module-0.5 編譯和安裝 make && make install
MySQL
初始化MySQL數(shù)據(jù)庫(kù) mysql_install_db --user=mysql 創(chuàng)建新用戶和授予權(quán)限 echo "CREATE DATABASE testdb;" | mysql -u root -p echo "GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'localhost' IDENTIFIED BY 'password';" | mysql -u root -p 啟動(dòng)MySQL服務(wù) sudo systemctl start mysqld sudo systemctl enable mysqld
PHP
下載PHP并配置:
下載PHP源碼 wget https://www.php.net/distributions/php-7.4.36.tar.gz tar -zxvf php-7.4.36.tar.gz cd php-7.4.36 修改php.ini文件以啟用SSL支持 cp /etc/php/7.4/cli/conf.d/70-swoole.ini . sed -i '/swoole.so/a ssl.use_system_certdir = On' /etc/php/7.4/cli/conf.d/70-swoole.ini 配置Nginx模塊 echo "[module] name=swoole path=/usr/local/php/libexec" >> /etc/nginx/modules-enabled/swoole.conf 配置Nginx vi /etc/nginx/nginx.conf 添加如下配置以啟用SNI(Server Name Indication) server { listen 443 ssl; server_name yourdomain.com; ssl_certificate /path/to/your/server.crt; # 替換為你的SSL證書路徑 ssl_certificate_key /path/to/your/private.key; # 替換為你的私鑰路徑 } 重新加載Nginx配置 sudo service nginx reload 設(shè)置環(huán)境變量 export PATH=$PATH:/usr/local/php/bin
三、配置SSL證書
創(chuàng)建一個(gè)新的目錄來(lái)存放SSL證書:
mkdir -p /etc/nginx/certs/
生成自簽名證書:
openssl req -newkey rsa:4096 -nodes -sha256 -days 365 -keyout /etc/nginx/certs/testcert.key -out /etc/nginx/certs/testcert.csr
然后請(qǐng)求一個(gè)外部證書簽發(fā)機(jī)構(gòu)的證書:
openssl x509 -req -in /etc/nginx/certs/testcert.csr -CA /etc/nginx/certs/ca.pem -CAkey /etc/nginx/certs/ca.key -CAcreateserial -out /etc/nginx/certs/testcert.pem -days 365
更新Nginx配置文件以引用新的證書:
ssl_certificate /etc/nginx/certs/testcert.pem; ssl_certificate_key /etc/nginx/certs/testcert.key;
重啟Nginx以應(yīng)用更改:
sudo service nginx restart
四、測(cè)試SSL連接
打開(kāi)瀏覽器并輸入您的域名,檢查SSL證書的有效性,您應(yīng)該能看到HTTPS標(biāo)志,表明您的網(wǎng)站正在安全地通過(guò)SSL進(jìn)行通信。
通過(guò)以上步驟,您已經(jīng)成功在Linux系統(tǒng)上安裝了LNMP環(huán)境,并配置了SSL證書,這不僅增強(qiáng)了您的網(wǎng)站安全性,還提高了用戶體驗(yàn),今后在開(kāi)發(fā)和部署Web應(yīng)用程序時(shí),請(qǐng)務(wù)必考慮SSL加密,這對(duì)于維護(hù)用戶信任至關(guān)重要。