Maison > Article > Opération et maintenance > Comment configurer la communication sécurisée HTTPS entre le serveur Nginx et iOS
Introduction
Dans les communications réseau, un logiciel de capture de paquets peut être utilisé pour analyser les requêtes réseau et effectuer des attaques par rejeu. Les solutions pour rejouer les attaques sont généralement Il utilise un. paramètre changeant, tel que l'horodatage chiffré par RSA, mais compte tenu du délai de transmission du réseau, l'horodatage doit avoir une certaine tolérance aux erreurs, ce qui ne peut toujours pas fondamentalement empêcher les attaques par relecture. Si vous souhaitez mieux résoudre le problème des attaques par rejeu, vous devriez envisager d'utiliser la communication https. Le protocole https est un protocole réseau construit à partir du protocole SSL+http qui peut effectuer une transmission cryptée et une authentification d'identité. Il est plus sécurisé que le protocole http. .
realization
Pour les sites Web accessibles avec un navigateur, vous devez demander un certificat auprès du ca pour garantir que les pages Web https peuvent être consultées normalement, sinon il sera averti des sites Web non sécurisés ou non certifiés et, pour certaines transmissions de données en arrière-plan, utilisera un certificat auto-signé.
Configuration du serveur
Générer le certificat
Effectuez les opérations suivantes sur la ligne de commande du serveur # 🎜🎜#
openssl genrsa -des3 -out server.key 2048②Supprimez le mot de passe du fichier de clé, ici vous vous devez entrer ① pour remplir le mot de passe
openssl rsa -in server.key -out server.key③Générer le fichier csr, cette étape nécessite la saisie d'une variété d'informations, vous pouvez appuyer sur Entrée pour les ignorer tous
openssl req -new -key server.key -out server.csr④Générer le fichier crt , dans cette étape - jours est la période de validité, vous pouvez l'écrire plus longtemps
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt⑤ Combinez crt et key pour créer pem, qui sera utilisé pour générer cer plus tard pour la vérification du client
cat server.crt server.key > server.pem⑥ Utilisez pem pour générer cer , le fichier cer est stocké sur le client pour vérification
openssl x509 -in server.pem -outform der -out server.cer
2 Modifier le fichier de configuration nginx#. 🎜🎜#
Si vous ne connaissez pas le fichier de configuration Pour imprimer le chemin, utilisez la commande suivante.
nginx -t
Cette commande peut être utilisée pour tester si le fichier de configuration est correct et imprimera également le chemin.
Selon le contenu imprimé, ouvrez nginx.conf et vous constaterez qu'il existe une balise de configuration http { ... } Ajoutez une balise de configuration du serveur à la balise 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. Mettre à jour la configuration
nginx -t #测试配置文件是否正确
nginx -s reload #重新加载配置文件
À ce stade, la configuration côté serveur est terminée.
S'il s'agit d'un certificat émis par ca, utilisez simplement la requête https directement, mais nous sommes un certificat auto-signé, si c'est directement Une erreur sera signalée lors de l'accès. Voici comment utiliser afn pour configurer les requêtes https pour les certificats auto-signés.
1. Importez le certificat cer mentionné ci-dessus dans le bundle de l'applicationImporter server.cer dans le bundle
2 Avant d'utiliser afn pour faire une requête, effectuez la configuration suivante
afsecuritypolicy *policy = [afsecuritypolicy policywithpinningmode:afsslpinningmodepublickey]; policy.allowinvalidcertificates = yes; afhttpsessionmanager *manager = [afhttpsessionmanager manager]; manager.securitypolicy = policy; // 下面使用manager进行https请求即可。.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!