はじめに
ネットワーク通信では、パケット キャプチャ ソフトウェアを使用してネットワーク リクエストを分析し、リプレイ攻撃を実行できます。リプレイ攻撃の解決策は、通常、次のような変更パラメータを使用することです。 RSA 暗号化タイムスタンプですが、ネットワーク伝送遅延を考慮すると、タイムスタンプには一定のエラー許容度が必要ですが、それでもリプレイ攻撃を根本的に防ぐことはできません。リプレイ攻撃の問題をより適切に解決したい場合は、https 通信の使用を検討してください。https プロトコルは、ssl http プロトコルをベースにして構築されたネットワーク プロトコルであり、暗号化通信と本人認証を行うことができます。http プロトコルよりも安全です。
実装
ブラウザでアクセスする Web サイトの場合、https Web ページを正常に閲覧できるようにするには、CA から証明書を申請する必要があります。そうしないと、安全ではないことに注意してください。または、認定されていない Web サイトの場合、一部のバックグラウンド データの送信に、自己署名証明書を使用できます。
#サーバーの構成
証明書の生成
# # ① サーバーの秘密鍵を生成するには、4~8191 桁のパスワードを入力する必要があります
openssl genrsa -des3 -out server.key 2048
② キーファイルのパスワードを削除するには、パスワードを入力する必要があります
openssl rsa -in server.key -out server.key
を入力します。 ③ csr ファイルを生成します。このステップでは、さまざまな情報を入力する必要があります。Enter キーを押してすべてをスキップできます。
openssl req -new -key server.key -out server.csr
④ crt ファイルを生成します。このステップの -days は続きます。
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
⑤ Crt と key を結合して pem を作成し、後でクライアント検証用の cer を生成するために使用されます
cat server.crt server.key > server.pem
⑥ pem を使用して cer を生成します、cer ファイルは検証のためにクライアントに保存されます
openssl x509 -in server.pem -outform der -out server.cer
へのパスがわからない場合は、構成ファイルを印刷するには、次のコマンドを使用します。
nginx -t
このコマンドは、構成ファイルが正しいかどうかをテストするために使用でき、パスも出力します。
出力された内容に従い、nginx.conf を開くと http { ... } 設定タグがあるので、http タグにサーバー設定タグを追加します。
server { listen 443; server_name localhost; # 配置网站的根目录和首页的文件名和类型 index index.html index.htm index.php; root <这里填写网站的根目录> ssl on; ssl_certificate <这里填写crt文件server.crt的全路径> ssl_certificate_key <这里填写私钥key文件server.key的全路径> # 下面是对php的配置,如果不配置,将无法正常解析php文件,这段配置是从nginx对http的80端口配置中复制过来的,如果这段配置不能正常工作,请从自己的服务器对80端口的配置文件中复制过来。 location ~ .*\.(php|php5)?$ { #fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 1h; } # 这里如果不知道如何填写,请参考80端口的配置文件 include <nginx的conf目录路径>/rewrite/default.conf; access_log <nginx服务器日志的路径>/default.log; }
nginx -t #测试配置文件是否正确
nginx -s reload #重新加载配置文件
CA発行の証明書であればhttpsリクエストを直接利用できますが、直接アクセスする場合は自己署名証明書となります。 、以下で説明するように、エラーが報告されます。 afn を使用して自己署名証明書の https リクエストを設定する方法を次に示します。
1. 上記の cer 証明書をアプリのバンドルにインポートします。server.cer インポート バンドルを配置します。
2. afn を使用してリクエストを行う前に、次の設定を実行してください以上がNginx サーバーと iOS の間で HTTPS の安全な通信を構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。afsecuritypolicy *policy = [afsecuritypolicy policywithpinningmode:afsslpinningmodepublickey];
policy.allowinvalidcertificates = yes;
afhttpsessionmanager *manager = [afhttpsessionmanager manager];
manager.securitypolicy = policy;
// 下面使用manager进行https请求即可。