HTTPS = HTTP + SSL/TLS。在傳輸層建立加密通道,應用層 HTTP 協議內容(含參數)保持不變,由 TLS 透明加密傳輸。
幾乎無需修改業務代碼。Servlet/JSP/Controller 邏輯完全復用,參數獲取(request.getParameter)方式不變。唯一可能調整:若代碼中硬編碼 https:// 生成絕對 URL,需改為相對路徑或動態判斷 request.getScheme()。
是,核心在 Web 容器配置 SSL:
server.xml 配置 <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true" scheme="https" secure="true" keystoreFile="path/to/keystore" keystorePass="password" />listen 443 ssl; ssl_certificate cert.pem; ssl_certificate_key key.pem;(推薦作為反向代理,應用服務器保持 HTTP 內網通信)原有應用層加密邏輯可保留,也可簡化。HTTPS 已提供傳輸層加密,防竊聽、防篡改。若業務要求「端到端」加密(如防止服務器內存明文洩露),保留應用層加密;否則可移除以簡化架構。
.crt/.pem(公鑰證書)和 .key(私鑰)。.jks/.pfx,用 keytool 或 openssl 轉換)。https:// 訪問正常,瀏覽器顯示安全鎖圖標。若不想動原有 HTTP 服務部署:
server {
listen 443 ssl;
server_name api.example.com;
ssl_certificate /etc/nginx/cert.pem;
ssl_certificate_key /etc/nginx/key.pem;
location / {
proxy_pass https://localhost:8080; # 原 HTTP 服務
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
}
}
原服務完全不知情,Nginx 處理 SSL 終結,內網透傳 HTTP。