關於Nginx配置SSL證書(Https)和WebSocket的wss

一. 生成SSL自簽證書

       自簽證書就是自己生成的證書,免費的,不支持部署瀏覽器的,支持瀏覽器的就是收費的,需要購買,這裏因爲是本地測試,所以就用的自簽證書,買的證書可以跳過證書生成部分.

  1.  安裝OpenSSL

          OpenSSL是生成SSL的工具,這裏是在Win10下安裝的,下載的windows 64位的,直接下一步安裝.然後在環境變量的path添加OpenSSL安裝的bin路徑即可 

          下載鏈接

      2. 開始生成證書

  •  生成RSA私鑰

        des3算法,1024位強度,server.key 祕鑰文件名

openssl genrsa -des3 -out server.key 1024
  • 生成CSR(證書籤名請求)
openssl req -new -key server.key -out server.csr

 注意 :Common Name必須和域名保持一致

 由於是在本機測試所以也沒有域名,但是可以通過修改hosts文件模擬域名

 hosts文件在C:\Windows\System32\drivers\etc 目錄下,打開添加      127.0.0.1    demo.joyios.com

Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Beijing
Locality Name (eg, city) []:Beijing
Organization Name (eg, company) [Internet Widgits Pty Ltd]:joyios
Organizational Unit Name (eg, section) []:info technology
Common Name (e.g. server FQDN or YOUR name) []:demo.joyios.com   這一項必須和你的域名一致
Email Address []:[email protected]
  • 刪除私鑰中的密碼
openssl rsa -in server.key -out server.key
  • 生成自簽名證書
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

 這時候證書已經生成好了.包含3個文件:server.key | server.csr | server.crt

二. 配置Nginx

  • 放置證書

       打開nginx的conf目錄,創建keys目錄,將生成的證書(3個文件)放入keys目錄中

  • 修改nginx.conf

       

    server {
        listen       80;
        server_name  www.xxx.com;

	    rewrite ^(.*)$ https://${server_name}$1 permanent;

        location / {
            proxy_pass http://www.xxx.com:8080;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Port $server_port;
        }

    }

    server {
	    listen       443;
        server_name  www.xxx.com;
        ssl on;
        #配置證書的路徑
        ssl_certificate      keys/server.crt;
        ssl_certificate_key  keys/server.key;
        ssl_session_timeout  5m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
        
        # 普通的https請求
        location / {
             #配置轉發到8080端口
            proxy_pass http://www.xxx.com:8080;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Port $server_port;
        }
        
        # WebSocket 請求
	    location /websocketChat {
            proxy_pass http://www.xxx.com:8080;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
        
        # WebSocket 請求
        location /websocketAudio {
            proxy_pass http://www.xxx.com:8080;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }

    }
	
  • 重啓nginx

       進入nginx的安裝目錄

nginx -s reload

三. 大功告成,測試

      這時候已經搭建好了,WebSocket的js部分ws換成wss即可

      直接訪問 www.xxx.com,即可識別SSl證書,因爲沒有認證所有瀏覽器會攔截,信任就可以進入映射的8080端口(tomcat服務器)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章