Nginx サーバーと iOS の間で HTTPS の安全な通信を構成する方法

王林
リリース: 2023-05-28 23:12:45
転載
1006 人が閲覧しました

はじめに

ネットワーク通信では、パケット キャプチャ ソフトウェアを使用してネットワーク リクエストを分析し、リプレイ攻撃を実行できます。リプレイ攻撃の解決策は、通常、次のような変更パラメータを使用することです。 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
ログイン後にコピー

2.nginx 構成ファイルを変更します


へのパスがわからない場合は、構成ファイルを印刷するには、次のコマンドを使用します。

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;
}
ログイン後にコピー

3. 構成の更新

nginx -t #测试配置文件是否正确
nginx -s reload #重新加载配置文件
ログイン後にコピー
この時点で、サーバー側の構成は終了です。

クライアント設定

CA発行の証明書であればhttpsリクエストを直接利用できますが、直接アクセスする場合は自己署名証明書となります。 、以下で説明するように、エラーが報告されます。 afn を使用して自己署名証明書の https リクエストを設定する方法を次に示します。

1. 上記の cer 証明書をアプリのバンドルにインポートします。


Nginx サーバーと iOS の間で HTTPS の安全な通信を構成する方法server.cer インポート バンドルを配置します。

2. afn を使用してリクエストを行う前に、次の設定を実行してください

afsecuritypolicy *policy = [afsecuritypolicy policywithpinningmode:afsslpinningmodepublickey];
policy.allowinvalidcertificates = yes;
afhttpsessionmanager *manager = [afhttpsessionmanager manager];
manager.securitypolicy = policy;
// 下面使用manager进行https请求即可。
ログイン後にコピー

以上がNginx サーバーと iOS の間で HTTPS の安全な通信を構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート