AFNetworking+Nginx+HTTPS服務器通信

jopen 9年前發布 | 17K 次閱讀 iOS開發 移動開發 AFNetworking

1.介紹iOS平臺用AFNetworking與HTTPS后臺接口進行安全通信。 2.介紹后臺自簽名證書制作步驟。 3.以及Linux平臺Nginx配置HTTPS協議接口的Web站點。

這個關于AFNetworking的HTTPS安全通信的問題,很多沒有過第一次經驗的以及甚至有過一次經驗的都會有點不確定。 其實很簡單:

  • A.對于后臺服務器所配置動證書如果是經過CA機構認證頒發的,那么用戶用AFNetworking來訪問后臺接口完全無感覺,就和http一樣的方式。
  • B.但是一個HTTPS的證書如果是知名CA機構認證頒發的,那么就會有問題,AFNetworking默認拒絕和這樣的后臺服務器通信,因為驗 證通不過,就和大家網頁打開12306網站搶票一樣,那個證書也不是經過CA頒發的,而是鐵道部自己簽名的一個證書。所以,對于中小型初創或是成長型公司 來說,買一個https的證書也是需要花費不少費用的。所以大家在做后臺通信的時候一般都自簽名一個證書來實現https接口。自己簽名的的證書可以用下 面這個openssl命令進行生成:
  • </ul>

    openssl req -new -x509 -nodes -days 365 -newkey rsa:1024 -out tv.diveinedu.com.crt -keyout tv.diveinedu.com.key 

    其中: -days 365是指定證書的有效期時間長度,單位是天,從命令運行的時刻算起; -newkey rsa:1024是指定新生成的證書使用1024位長度的RSA非對稱加密算法; -out 指定輸出的證書文件名 -keyout 指定輸出的私鑰文件名 上面這個命令運行后會要輸入一些設置信息:

    Country Name (2 letter code) [AU]:CN
    State or Province Name (full name) [Some-State]:Hunan
    Locality Name (eg, city) :Changsha
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:tv.diveinedu.com
    Organizational Unit Name (eg, section) :Market
    Common Name (e.g. server FQDN or YOUR name) :tv.diveinedu.com
    Email Address :diveinedu@qq.com

    如果對搭建Linux后臺HTTPS服務有興趣,需要把證書和私鑰上傳到服務器或者直接在服務器生成,把此證書配置到后臺服務器中,以Nginx為例進行如下設置:

    • 1.先新增一個Nginx的虛擬主機配置文件,
    • </ul>

      sudo touch /etc/nginx/sites-available/tv.diveinedu.com 

      • 2.然后使這個配置文件生效:
      • </ul>

        sudo ln -sf /etc/nginx/sites-available/tv.diveinedu.com /etc/nginx/sites-enabled/tv.diveinedu.com

        • 3.編輯該文件:
        • </ul>

          sudo vim /etc/nginx/sites-enabled/tv.diveinedu.com 

          • 4.敲入 i 進入VIM編輯模式,輸入這樣配置:
          • </ul>

            server {
                listen 80;#HTTP默認端口80
                server_name tv.diveinedu.com;#主機名,與HTTP請求頭域的HOST匹配
                access_log  /var/log/nginx/tv.diveinedu.com.log;#訪問日志路徑
                return 301 https://$server_name$request_uri;#強制把所有http訪問跳轉到https
            }

            server { listen 443;#HTTPS默認端口443 ssl on;#打開SSL安全Socket ssl_certificate /etc/nginx/tv.diveinedu.com.crt;#證書文件路徑 ssl_certificate_key /etc/nginx/tv.diveinedu.com.key;#私鑰文件路徑

            server_name tv.diveinedu.com;#主機名,與HTTP請求頭域的HOST匹配
            access_log  /var/log/nginx/tv.diveinedu.com.log;#訪問日志路徑
            location / {
                root /var/www/tv.diveinedu.com/;#網站文檔根目錄
                index index.php index.html;#默認首頁
            }
            

            }</pre>

            • 5.敲ESC后退出VIM的編輯模式,再敲入 x 回車 在Vim保存退出。 然后執行Nginx配置文件語法檢查命令檢查配置是否有錯:
            • </ul>

              nginx -t

              如果沒有錯誤就會輸出:

              nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
              nginx: configuration file /etc/nginx/nginx.conf test is successful

              • 6.然后就只需要重啟Nginx服務器了
              • </ul>

                sudo service nginx restart 

                然后就去你的域名服務商后臺把你的域名解析到服務器到IP地址就可以自由訪問了,只不過會瀏覽器訪問會被自動組織并顯示警告,手動添加到信任即可。

                如果公司有錢想為用戶提供更好的服務和體驗,最好還是去知名CA認證機構去注冊申請一個有效的證書為妙! 不然瀏覽器(Chome)會這樣:

                AFNetworking+Nginx+HTTPS服務器通信

                AFNetworking+Nginx+HTTPS服務器通信

                來自:http://my.oschina.net/kgdugyiy/blog/536365

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!