Nginx是一款應用非常廣泛的web服務軟件,具有輕量級、擴展性好、跨平臺、動態加載配置文件等特點。同時具有反向代理、負載均衡等功能,深受IT技術人員青睞。
生產環境一般都是購買的商業版SSL證書,常見品牌有賽門鐵克、geotrust、global sign、沃通等,不同的品牌性能和價格方面都會有一定的差距,比較受歡迎的就是通配符證書,例如*.baidu.com * 代表任意字符串 一個證書可以用於多個子域名。本文主要是將自己配置Nginx https證書的過程記錄。沒那麼奢侈購買商業產品。將會分享一下自制SSL證書以及Nginx配置SSL證書的過程。
Nginx實現https需要http_ssl_module模塊支持,該模塊是默認編譯模塊,不需要我們再次編譯。
一、製作證書
1、生成key文件
openssl genrsa -out cert.key 2048
key文件內容
-----BEGIN RSA PRIVATE KEY----- MIIEoQIBAAKCAQEAxFtXu3n1TMDSVw7E5YlIY0EMORJMyalBWejs7f9gTBT0rc2v vB7u4qqf2bFi/HGf7a28GEDKJdkn9HAV9fHYM4efFoZbAary+CGjoMQKEnk8EA0a kWoCIY7unz8Zvo82CffCXHHFMmzCBuPXXj5bXF7uWqRELD6AGbJiGeCK4R4jDvXv EP7mgRd6uR7uF0aFUCYvy5c2OZ/I4dyHG/D1zfkbjQ0DXknRWYr31Ahao1wxri3D cEe8i37a22Nq2NPlEibqtYXDQF5D3sZBJT2oRPkQSBlI9SqXfqvLy/nqYeG9IpKd St48JUClgVLsvdG/vkGTj09R/arik9wVoqfgFQIDAQABAoH/B6uJwckBy/28Oapa Bp1WNopT7+bHGRmDc/+lQaa4HEC1ThS6yJ5stm3z0I0dUL8fgClJL6lYPCI/bUzz jqfjyh+CF18oLuh+lTK7MYx22EHkFrxsTUHW03jB2XaditQNSFZlQTcwfMfCzIIZ 55SH/RO4O9Iu14uZdWeCbYBX7HMvY2b+GRHLNeXGDsLnctaNP90/1DnWMPDKM+Ep l9DUrfMQf1IL/BKilA9k2wE6eI7eI14t8/7Q0mlSOIrgTti6Ep9TU2pCLkSkS2hu VKGqNqMZpN4rn+2lmKGr/LXjtM7BNeUHBM1jFBsZTs+KgU1oy66GjLIebB1km1Yw UE45AoGBAOnHKgsgjrW8by8tGFlGvxN/4ILUPzmuSwmybCweoezLzHuFtWAHS013 pM0uMMK5CmrC4t0vlw3rPycpgYjModPAL/cXVBHOcJQeA29DFh1cSODi4DckJtPD +T0ZHOaAWpuaSeBNXOS89ToVZKfr1TYhPQgIsbYHTpA5tjnKz6DbAoGBANcFjvC7 pimZW+ZLISkKVDxfOOgExvHd1TuEs87kRC+HzMfKSbUgu3M2gHmboj7vyRt+3F4J A2aA1aOCLDKs5GAvbMG+b4iXpW4l43ItWtutwcHMcQU04zZNK7IPecYC4bqq3D81 EI2oehQH2ImJMe2BFewA8uW9Ldl6qxf+ZB3PAoGAdA9EeDG5p8/dAvbIV8ofonah 51Gn8eLtreq+eUjb6stiwRAoc3wrjlIPpy1/V6y11zrZliXCQE7CE5cvj9LHpHCN X4ZdXlm22lHsMpiDqh/erobz+WwhOpDYc9S73FNsqEN42bqOm6CTvjpQtm0GdNEb k5l9YHlQL5n3NcnSOnECgYBce4uLh2pkog2g89eDa2nnvZ0gTk2zYhKA0wbzicK6 HtK5bAxf14BIgbyokYQrRb9eECaAW6gWwnshJLAV678ej8dbXaljOrZwteMqDM/z hLy9uk0yTBkeFfshTv61aC/mte6dURmZlElNrEI6hcPvv4HKTG4s2j2KOPS2ETjG iQKBgQCxa8NwzUkQnh+rI0Lq85BMhNJOQl0anZG1yXbpko0qb0T14h9unJXPtcj+ FuGfEBrXOd/vSb8wn9A9Whu9v0g6BoIVJX2XKOQLIC8pSWjf66x1K6h33S2lwTTf CHSRbiIIW2mhdVVXgQZGDAYJuDRSrbbQG9YnZx3AyZ3taRGbqA== -----END RSA PRIVATE KEY-----
2、生成pem文件
openssl req -new -x509 -days 3650 -key cert.key -out cert.pem
pem 文件內容
-----BEGIN CERTIFICATE----- MIID8zCCAtugAwIBAgIJAMSYcH7adC82MA0GCSqGSIb3DQEBCwUAMIGPMQswCQYD VQQGEwJDTjEMMAoGA1UECAwDQUJDMRAwDgYDVQQHDAdCZWlqaW5nMRAwDgYDVQQK DAdCZWlqaW5nMRIwEAYDVQQLDAlib25kbmdpbngxFjAUBgNVBAMMDWJvbmRuZ2lu eC5jb20xIjAgBgkqhkiG9w0BCQEWE2FkbWluQGJvbmRuZ2lueC5jb20wHhcNMTgw ODAyMjMxNjAwWhcNMjgwNzMwMjMxNjAwWjCBjzELMAkGA1UEBhMCQ04xDDAKBgNV BAgMA0FCQzEQMA4GA1UEBwwHQmVpamluZzEQMA4GA1UECgwHQmVpamluZzESMBAG A1UECwwJYm9uZG5naW54MRYwFAYDVQQDDA1ib25kbmdpbnguY29tMSIwIAYJKoZI hvcNAQkBFhNhZG1pbkBib25kbmdpbnguY29tMIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEAxFtXu3n1TMDSVw7E5YlIY0EMORJMyalBWejs7f9gTBT0rc2v vB7u4qqf2bFi/HGf7a28GEDKJdkn9HAV9fHYM4efFoZbAary+CGjoMQKEnk8EA0a kWoCIY7unz8Zvo82CffCXHHFMmzCBuPXXj5bXF7uWqRELD6AGbJiGeCK4R4jDvXv EP7mgRd6uR7uF0aFUCYvy5c2OZ/I4dyHG/D1zfkbjQ0DXknRWYr31Ahao1wxri3D cEe8i37a22Nq2NPlEibqtYXDQF5D3sZBJT2oRPkQSBlI9SqXfqvLy/nqYeG9IpKd St48JUClgVLsvdG/vkGTj09R/arik9wVoqfgFQIDAQABo1AwTjAdBgNVHQ4EFgQU pollYkAAmTvsn66WJRJqbw7pgPUwHwYDVR0jBBgwFoAUpollYkAAmTvsn66WJRJq bw7pgPUwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAYHPzGJrqNPab IGKh8fQcV+IotjGooz3QeLVPLCOm05UNTo4MVRcuSFriHccEwlj3q92yjSdf63bT KnnTfwFl5Jrx9GzgvlM1cWPMBcB8LkDvS7WgHWTVc3MQ+rD149G8WY9quP2eBFGn klUJ0C8NeQOEL0Aj1WMx3z/c8aguv+JRczMQIqZBoAdjARtEHdVntMRUivvgKuTp 4yxOO2/9k23QTm0/d1JzMK14/PAsKA2Snux69XLFW2Kfh/6T0e7IEXEEM3LROV5p SDT+AqyP8q4mb+JswA9Lzr+VLUMxH/Hl9tDtJHfWJ/6u3/6FwhkCColyA11QkSXe /WAoCDXMeg== -----END CERTIFICATE-----
兩個文件生成完成,接下來就可以配置Nginx,然後就可以通過https訪問我們的站點。
步驟:
1、將生成的key、pem文件拷貝到nginx的conf目錄下,爲了管理多個SSL證書,可以在nginx的 conf目錄下建立cert目錄專門存放SSL證書相關文件。
例如:在該目錄下有兩個SSL證書文件,
2、配置nginxSSL文件
將SSL相關的開啓,ssl_certificate處 寫我們生成的pem文件,ssl_certificate_key寫我們生成的key文件。配置完成後檢查nginx的配置文件 然後重啓nginx.
server { listen 443 ssl; server_name 10.57.31.204 server.bondback.com; ssl_certificate cert/cert.pem ; ssl_certificate_key cert/cert.key; #ssl_certificate cert/bond.pem ; #ssl_certificate_key cert/bond.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { proxy_pass http://www; } }
通過IP或者綁定hosts訪問https://10.57.31.204/
3、http轉https配置
隨着https使用越來越廣泛,大多數網站已經使用https,而部分用戶的使用習慣還是http,這時我們就可以配置http跳轉https這種方式引導用戶,同時提高網站的兼容性。
我們可以在http配置的location 一下配置
rewrite ^(.*)$ https://$host$1 permanent; listen 80; server_name server.bundbank.com; #charset koi8-r; #access_log logs/host.access.log main; location / { rewrite ^(.*)$ https://$host$1 permanent; # permanent 永久跳轉 }
當我們訪問http://10.57.31.204就會跳轉到https://10.57.31.204
這樣我們就可以完成nginx的ssl的配置,優化部分後期完善!