Facebook遊戲在服務器端關於SSL的相關配置

       網上關於SSL簽名認證和服務器端的相關配置文章很多,但是要麼講的不全、不明確,要麼講的又很複雜卻不明所以。唉,不多說了,心塞淚啊。。

       本文主要介紹:SSL域名證書創建,CentOS服務器下nginx、tomcat關於SSL方面的配置,和過程中遇到的問題的解決方案。


1.SSL域名證書的創建方式

    (1)openssl方式

       主要指令如下,參考來源:http://www.liuchungui.com/blog/2015/09/25/zi-jian-zheng-shu-pei-zhi-httpsfu-wu-qi/

      ①生成私鑰
       openssl genrsa -des3 -out private.key 2048
       -des3代表加上了加密,2048代表生成的密鑰位數,因爲1024已經不是很安全。

      ②生成證書請求
      openssl req -new -key private.key -out server.csr
       這一步需要填寫一些信息,小心,寫錯了就得重來一遍!按Backspace刪不去光標前的內容。其中Common Name那填寫的是你的域名或服務器地址。

       ③生成服務器私鑰,去除密鑰口令。好處在於每次重啓nginx時無需輸入密鑰密碼。
      openssl rsa -in private.key -out server.key

       ④使用私鑰爲證書請求籤名,生成給服務器簽署的證書,格式是x509的PEM格式
       openssl x509 -req -in server.csr -out server.crt -outform pem -signkey server.key -days 3650
       -outform pem指定證書生成的格式,默認是pem,所以這個命令也可以寫作成:

      sudo openssl x509 -req -in server.csr -out server.crt -signkey server.key -days 3650

      3650表示有效期限是3650天。

    (2)keytool方式(未親試)

    (3)在線生成(推薦)

       本人使用的是沃通。網址:https://buy.wosign.com/free/#ssl。方便、快捷並且生成的證書涉面廣,包括nginx、tomcat、apache等等的。而傳說中的StartSSL試了一下,最後生成了一個郵箱的p12文件。。可能沒找對地方。。


2.nginx nginx.conf配置

server {
        listen       443 ssl;
        server_name  服務器名;
        ssl on;
        ssl_certificate crt文件位置; 
        ssl_certificate_key key文件位置;

       ##以上5行很重要!!

        ssl_session_timeout  5m;
        ssl_protocols SSLv2 SSLv3 TLSv1;
        ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers on;
        location / {
           root   html;
           index  index.html index.htm;
        }

      ##用於跳轉到tomcat,因爲我要訪問的是jsp界面,位置在apache下,之前忽略了這點,以致報了404和405錯誤。
location ~ (\.jsp)|(\.do)|(\.xjpg)|(\.com)$ {
          proxy_pass http://werewholf;proxy_set_header X-Real-IP $remote_addr;
       }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }


3.tomcat server.xml配置

       在此,採用的是APR方式。具體APR是啥,自己查吧。

       <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

       <Connector   
           port="8443"  protocol="HTTP/1.1" maxThreads="200"
           scheme="https" secure="true" SSLEnabled="true"
          # SSLCACertificateFile="/www/ssl/Apache/1_root_bundle.crt"
           SSLCertificateFile="crt文件"
           SSLCertificateKeyFile="key文件"
           clientAuth="optional" SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"/>     
    <!-- Define an AJP 1.3 Connector on port 8009     AJP可以使訪問服務器網址時無需寫端口號-->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />


4.主要問題

     (1)運行nginx時缺少http_ssl_module

       首先nginx/sbin/nginx -V可以查看nginx版本和編譯信息

      然後參考:http://www.itnpc.com/news/web/146771636486934.html

      若編譯時出問題,可能是沒有安openssl。總之見招拆招吧。

       (2)apache啓動時報

       SEVERE: Failed to initialize the SSLEngine.
       org.apache.tomcat.jni.Error: 70023: This function has not been implemented on this platform

       參考:http://stephen830.iteye.com/blog/2112005來一遍應該就行。


5.另附安裝tomcat-connectors-1.2.37-src.tar.gz,獲取mod_jk.so。

       



   

   

發佈了33 篇原創文章 · 獲贊 9 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章