本記錄只是做爲本身的一個心得體會,由於真的花了蠻長時間,可能並不具有通用性,因此該文檔僅做參考。
前言:
安裝nginx的教程,請查看個人nginx安裝教程https://blog.csdn.net/u012225679/article/details/81876782(此文轉載),這裏不作敘述。
注意請安裝支持TLS V1.2協議的openssl版本模塊。linux
本人在項目當中要使用到微信小程序調用接口,故根據微信小程序說明文檔說明,服務器應當支持https訪問,而且協議要採用的TLS v1.2。個人nginx服務爲淘寶服務器tengine2.10.0(nginx 1.6.2)版本。當前版本支持TLSV1.2協議。nginx
正文:
因爲當前的協議支持是在原有系統的狀況進行支持TLS V1.2協議,因此原有系統是不支持該協議的。以下是經過火狐瀏覽器查看網站支持的協議,一樣版本的nginx服務器,jdk下進行的對比:
請查看下面的TLS V1.0
下面是我本身的服務器所搭建的網站支持協議狀況:
因此這兩個nginx服務器一致的狀況下,配置相同的狀況下,非本人的網站並不支持TLS v1.2協議。
我在查看服務器的openssl的版本的時候,這兩個服務器的openssl的版本都是以下:
請注意:該版本的openssl若是是使用 openssl version這個命令的話,該模塊並不必定是你nginx編譯安裝的openssl版本模塊。(由於死在這裏了,因此影響深入)。
而後進入nginx的安裝目錄的sbin目錄下,經過執行查看nginx的安裝模塊:web
./nginx -V
configure arguments: --prefix=/home/xx/openresty/nginx --with-cc-opt='-I/home/xx/nginx/ngx_openresty/ngx_openresty/build/luajit-root/home/xx/openresty/luajit/include/luajit-2.1 -O2' --add-module=../ngx_devel_kit-0.2.19 --add-module=../echo-nginx-module-0.57 --add-module=../xss-nginx-module-0.04 --add-module=../ngx_coolkit-0.2rc2 --add-module=../set-misc-nginx-module-0.28 --add-module=../form-input-nginx-module-0.10 --add-module=../encrypted-session-nginx-module-0.03 --add-module=../srcache-nginx-module-0.29 --add-module=../ngx_lua-0.9.15 --add-module=../ngx_lua_upstream-0.02 --add-module=../headers-more-nginx-module-0.25 --add-module=../array-var-nginx-module-0.03 --add-module=../memc-nginx-module-0.15 --add-module=../redis2-nginx-module-0.11 --add-module=../redis-nginx-module-0.3.7 --add-module=../rds-json-nginx-module-0.13 --add-module=../rds-csv-nginx-module-0.05 --with-ld-opt='-Wl,-rpath,/home/xx/openresty/luajit/lib -L/home/xx/nginx/ngx_openresty/ngx_openresty/build/luajit-root/home/xx/openresty/luajit/lib' --with-pcre=/home/xx/nginx/ngx_openresty/ngx_openresty/../pcre-7.8 --with-zlib=/home/xx/nginx/ngx_openresty/ngx_openresty/../zlib-1.2.8 --with-openssl=/home/xx/nginx/ngx_openresty/ngx_openresty/../openssl-0.9.8zf --with-http_ssl_module
loaded modules:
ngx_core_module (static)
ngx_errlog_module (static)
ngx_conf_module (static)
ngx_dso_module (static)
ngx_syslog_module (static)
ngx_events_module (static)
ngx_event_core_module (static)
ngx_epoll_module (static)
ngx_procs_module (static)
ngx_proc_core_module (static)
ngx_openssl_module (static)
ngx_regex_module (static)
ngx_http_module (static)
ngx_http_core_module (static)
ngx_http_log_module (static)
ngx_http_upstream_module (static)
ngx_http_static_module (static)
ngx_http_autoindex_module (static)
ngx_http_index_module (static)
ngx_http_auth_basic_module (static)
ngx_http_access_module (static)
ngx_http_limit_conn_module (static)
ngx_http_limit_req_module (static)
ngx_http_geo_module (static)
ngx_http_map_module (static)
ngx_http_split_clients_module (static)
ngx_http_referer_module (static)
ngx_http_rewrite_module (static)
ngx_http_ssl_module (static)
ngx_http_proxy_module (static)
ngx_http_fastcgi_module (static)
ngx_http_uwsgi_module (static)
ngx_http_scgi_module (static)
ngx_http_memcached_module (static)
ngx_http_empty_gif_module (static)
ngx_http_browser_module (static)
ngx_http_user_agent_module (static)
ngx_http_upstream_ip_hash_module (static)
ngx_http_upstream_consistent_hash_module (static)
ngx_http_upstream_check_module (static)
ngx_http_upstream_least_conn_module (static)
ngx_http_reqstat_module (static)
ngx_http_upstream_keepalive_module (static)
ngx_http_upstream_dynamic_module (static)
ngx_http_stub_status_module (static)
ndk_http_module (static)
ngx_coolkit_module (static)
ngx_http_lua_upstream_module (static)
ngx_http_memc_module (static)
ngx_http_redis2_module (static)
ngx_http_redis_module (static)
ngx_http_write_filter_module (static)
ngx_http_header_filter_module (static)
ngx_http_chunked_filter_module (static)
ngx_http_range_header_filter_module (static)
ngx_http_gzip_filter_module (static)
ngx_http_postpone_filter_module (static)
ngx_http_ssi_filter_module (static)
ngx_http_charset_filter_module (static)
ngx_http_userid_filter_module (static)
ngx_http_footer_filter_module (static)
ngx_http_trim_filter_module (static)
ngx_http_headers_filter_module (static)
ngx_http_upstream_session_sticky_module (static)
ngx_http_echo_module (static)
ngx_http_xss_filter_module (static)
ngx_http_set_misc_module (static)
ngx_http_form_input_module (static)
ngx_http_encrypted_session_module (static)
ngx_http_srcache_filter_module (static)
ngx_http_lua_module (static)
ngx_http_headers_more_filter_module (static)
ngx_http_array_var_module (static)
ngx_http_rds_json_filter_module (static)
ngx_http_rds_csv_filter_module (static)
ngx_http_copy_filter_module (static)
ngx_http_range_body_filter_module (static)
ngx_http_not_modified_filter_module (static)
發現loaded module上面的一行的後面,發現了openssl-0.9.8zf,這個版本的openssl並不支持TLSv1.2的協議(先讓我默哀一分鐘)。redis
因此最後只能採用升級openssl了。
升級的步驟也比較簡單,下載好openssl的模塊以後,這裏採用的openssl-1.0.1e,解壓縮到某個目錄下。apache
[root@VM_0_2_centos software]# ll
total 152892
drwxr-xr-x 9 root root 4096 Aug 22 12:41 apache-tomcat-8.0.53
-rw-r--r-- 1 root root 9455895 Jun 30 00:39 apache-tomcat-8.0.53.tar.gz
drwxr-xr-x 8 uucp 143 4096 Oct 8 2013 jdk1.7.0_45
-rw-r--r-- 1 root root 138094686 Aug 21 19:44 jdk-7u45-linux-x64.tar.gz
*drwxr-xr-x 23 root root 4096 Aug 22 13:43 openssl-1.0.1e
-rw-r--r-- 1 root root 4459777 Aug 22 10:57 openssl-1.0.1e.tar.gz*
drwxr-xr-x 9 1169 1169 12288 Aug 22 13:43 pcre-8.40
-rw-r--r-- 1 root root 2065161 Aug 22 11:19 pcre-8.40.tar.gz
drwxr-xr-x 12 50469 users 4096 Aug 22 13:41 tengine-2.1.0
-rw-r--r-- 1 root root 1653240 Aug 21 16:10 tengine-2.1.0.tar.gz
drwxr-xr-x 14 501 games 4096 Aug 22 13:44 zlib-1.2.11
-rw-r--r-- 1 root root 607698 Jan 16 2017 zlib-1.2.11.tar.gz
[root@VM_0_2_centos software]#
我這裏是放在了/opt/software/目錄下:
其實不須要從新編譯或者安裝,至少基於我這臺服務器的安裝環境不須要,也就是說下載下來的源碼,解壓縮就能夠了。json
而後進入到nginx的源碼安裝目錄,因爲我這邊兩個文件在同一個目錄下,因此直接進入:小程序
[root@VM_0_2_centos software]# ll
total 152892
drwxr-xr-x 9 root root 4096 Aug 22 12:41 apache-tomcat-8.0.53
-rw-r--r-- 1 root root 9455895 Jun 30 00:39 apache-tomcat-8.0.53.tar.gz
drwxr-xr-x 8 uucp 143 4096 Oct 8 2013 jdk1.7.0_45
-rw-r--r-- 1 root root 138094686 Aug 21 19:44 jdk-7u45-linux-x64.tar.gz
drwxr-xr-x 23 root root 4096 Aug 22 13:43 openssl-1.0.1e
-rw-r--r-- 1 root root 4459777 Aug 22 10:57 openssl-1.0.1e.tar.gz
drwxr-xr-x 9 1169 1169 12288 Aug 22 13:43 pcre-8.40
-rw-r--r-- 1 root root 2065161 Aug 22 11:19 pcre-8.40.tar.gz
drwxr-xr-x 12 50469 users 4096 Aug 22 13:41 tengine-2.1.0
-rw-r--r-- 1 root root 1653240 Aug 21 16:10 tengine-2.1.0.tar.gz
drwxr-xr-x 14 501 games 4096 Aug 22 13:44 zlib-1.2.11
-rw-r--r-- 1 root root 607698 Jan 16 2017 zlib-1.2.11.tar.gz
[root@VM_0_2_centos software]# cd tengine-2.1.0
[root@VM_0_2_centos tengine-2.1.0]# ./configure --prefix=/usr/local/tools/nginx2 --with-pcre=/opt/software/pcre-8.40 --with-zlib=/opt/software/zlib-1.2.11 --with-openssl=/opt/software/openssl-1.0.1e --with-http_ssl_module
上面的./configure 命令請注意修改 –with-openssl的參數值,改爲openssl-1.0.1e的源碼解壓縮目錄便可。
完成以後而後,直接make && make install 。微信小程序
[root@VM_0_2_centos tengine-2.1.0]# make && make install
安裝完成以後,就能夠在/usr/local/tools/當中有nginx2的目錄和內容了。能夠不建立nginx2目錄,會自動建立:centos
[root@VM_0_2_centos sbin]# cd /usr/local/tools/
[root@VM_0_2_centos tools]# ll
total 28
drwxr-xr-x 13 root root 4096 Aug 22 12:38 nginx
drwxr-xr-x 13 root root 4096 Aug 22 13:39 nginx1
drwxr-xr-x 13 root root 4096 Aug 22 13:45 nginx2
drwxr-xr-x 6 root root 4096 Aug 22 12:22 openssl
drwxr-xr-x 6 root root 4096 Aug 22 12:23 pcre
-rw-r--r-- 1 root root 634 Aug 22 12:33 server.txt
drwxr-xr-x 5 root root 4096 Aug 22 12:24 zlib
最後,修改nginx的配置文件以支持https的協議,請參考個人https協議配置文檔https://blog.csdn.net/u012225679/article/details/81872876,固然,ssl證書是必不可少的。能夠網上搜索一下,或者後期我會再更新一個申請ssl證書的文檔。
最後,訪問網站,查看協議,以下圖所示:
以下即是安裝完成了。瀏覽器