Ici, je vais vous présenter comment créer un site SSL à l'aide de Let's Encrypt et nginx, et ce que j'ai fait lorsque j'ai exploité plusieurs sites sur un serveur en utilisant la fonction nginx telle qu'elle est et que je les ai tous rendus SSL. Faire. Nous avons publié le fichier de configuration nginx, veuillez donc vous référer ici pour plus de détails. https://github.com/TakuKobayashi/ActivatingNginxConf
SSL est un mécanisme de communication en cryptant des données. Si vous activez SSL, vous pourrez utiliser des URL telles que https: // (pour HTTP) et wss: // (pour Websocket) comme indiqué ci-dessous.
Pour plus de détails, voir ici, etc.
Un certificat SSL </ b> </ font> est nécessaire pour que le serveur soit compatible SSL et puisse communiquer. Les certificats SSL sont communément appelés Autorité de certification et sont approuvés. Vous devez payer de l'argent des trois parties pour obtenir un certificat. Le coût est de dizaines de milliers à des centaines de milliers de yens par an </ font>. C'est haut ...
Let's Encrypt est une autorité de certification (groupe / projet) qui délivre des certificats SSL gratuitement </ font>.
Pour obtenir un certificat SSL à l'aide de Let's Encrypt, Python 2.7 ou supérieur doit être installé, alors installez Python 2.7 ou supérieur. J'ai installé Python après avoir mis Pyenv afin de pouvoir basculer entre les versions de Python.
yum install gcc gcc-c++ make git openssl-devel bzip2-devel zlib-devel readline-devel sqlite-devel bzip2 sqlite
zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel
git clone git://github.com/yyuu/pyenv.git
cd pyenv/
vi ~/.bashrc
Trouvez l'emplacement de pyenv dans .bashrc (ici dans / app / library / pyenv) et écrivez ce qui suit et passez-le.
export PYENV_ROOT="/app/library/pyenv"
if [ -d "${PYENV_ROOT}" ]; then
export PATH=${PYENV_ROOT}/bin:$PATH
eval "$(pyenv init -)"
fi
Activez le chemin défini.
source ~/.bashrc
Et
pyenv
S'il n'y a pas d'erreur, le chemin est transmis.
pyenv install --list
Ici, nous allons installer Python 2.7.13
pyenv install 2.7.13
pyenv global 2.7.13
avec ça
python
Est exécuté, et si aucune erreur ne se produit, l'installation est terminée.
La prochaine fois que vous utiliserez certbot pour obtenir un certificat, il vérifiera l'existence du serveur. Vous devez créer un chemin dédié pour accueillir cette vérification. Cette fois, nous répondrons en créant un répertoire sous la racine du document. Utilisez Nginx Pour Nginx, la racine du document se trouve dans [répertoire racine de nginx] /conf.d/default.conf. Dans ce cas, il s'agit du contenu décrit ci-dessous.
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
Par conséquent, créez un répertoire vide pour définir le chemin à partir de la racine du document comme indiqué ci-dessous.
mkdir [répertoire racine nginx]/html/.well-known
Ensuite, éditez [répertoire racine nginx] /nginx.conf afin que le chemin créé puisse être utilisé du côté nginx.
http{
...
server {
...
location ^~ /.well-known/acme-challenge/ {
root /usr/share/nginx/html/.well-known;
}
...
}
}
Ensuite, redémarrez nginx pour que les modifications s'appliquent.
service nginx restart
certbot est un outil fourni par Let ’s Encrypt et est un agent (client) qui communique avec Let’ s Encrypt. Il existe une méthode qui n'utilise pas Git, mais cette fois nous allons l'installer en utilisant la méthode qui utilise Git.
git clone https://github.com/certbot/certbot
cd certbot/
./certbot-auto certonly
Ensuite, il y a les annonces suivantes, nous allons donc faire divers réglages.
How would you like to authenticate with the ACME CA?
1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)
Select the appropriate number [1-2] then enter: 2
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):[adresse mail]
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree
in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
(A)gree/(C)ancel: A
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
(Y)es/(N)o: Y
Please enter in your domain name(s) (comma and/or space separated) (Enter 'c'
to cancel):[Nom de domaine](Sivoussouhaitezdéfinirplusieursdomaines,répertoriez-lesséparéspardesvirgules.Iciue4yochi.Définirsurnet)
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for ue4yochi.net
Select the webroot for ue4yochi.net:
1: Enter a new webroot
Press 1 [enter] to confirm the selection (press 'c' to cancel): 1
Input the webroot for ue4yochi.net: (Enter 'c' to cancel):[Le chemin du répertoire créé ci-dessus]
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/ue4yochi.net/fullchain.pem. Your cert will
expire on 2017-10-03. To obtain a new or tweaked version of this
certificate in the future, simply run certbot-auto again. To
non-interactively renew all of your certificates, run
"certbot-auto renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Au dessus de, Dans / etc / letsencrypt / live / [nom de domaine] / </ font> Si vous disposez des fichiers fullchain.pem </ font> et privkey.pem </ font>, vous avez obtenu le certificat.
Modifiez le fichier nginx.conf comme suit:
http{
...
server {
listen 443 ssl;
server_domaine de nom A;
...
ssl_certificate /etc/letsencrypt/live/[Nom de domaine]/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/[Nom de domaine]/privkey.pem;
...
location ^~ /.well-known/acme-challenge/ {
root /usr/share/nginx/html/.well-known;
}
...
location / {
...
}
}
}
Ensuite, redémarrez nginx pour que les modifications s'appliquent.
service nginx restart
Si le serveur fonctionne maintenant https://ドメインAにブラウザでアクセスすることができれば、SSL化完了です。
La prise en charge SSL ci-dessus dans nginx peut être appliquée même lorsque vous essayez d'exploiter plusieurs sites sur un serveur. Je ne veux pas dépenser trop d'argent, alors ce serait bien si je pouvais gérer plusieurs sites sur un serveur ♪ De plus, ce serait formidable si tous pouvaient prendre en charge SSL ♪ Cependant, un ou plusieurs domaines sont requis pour exploiter plusieurs sites sur un serveur </ b> </ font>.
À ce stade, les paramètres d'un site sont déjà terminés. Tout d'abord, créez un chemin vérifiable comme le premier afin que vous puissiez obtenir un certificat pour le deuxième site avec certbot. Vous pouvez utiliser le même que le premier, mais vous devez définir chacun d'eux. Décrivez le fichier de configuration nginx comme suit.
http{
...
server {
listen 443 ssl;
server_domaine de nom A;
...
ssl_certificate /etc/letsencrypt/live/[Nom de domaine]/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/[Nom de domaine]/privkey.pem;
...
location ^~ /.well-known/acme-challenge/ {
root /usr/share/nginx/html/.well-known;
}
...
location / {
...
}
}
server {
listen 443 ssl;
server_domaine de nom B;
...
location ^~ /.well-known/acme-challenge/ {
root /usr/share/nginx/html/.well-known;
}
...
location / {
...
}
}
Ensuite, redémarrez nginx pour que les modifications s'appliquent.
service nginx restart
Entrez ce qui suit de la même manière que la procédure d'acquisition de certificat ci-dessus.
./certbot-auto certonly
Dans ce cas, si vous avez déjà obtenu un certificat et que vous souhaitez obtenir un nouveau domaine et ajouter un certificat, vous pouvez l'appliquer en exécutant la même procédure. Continuez à lire les annonces qui ont été publiées,
...
Please enter in your domain name(s) (comma and/or space separated) (Enter 'c'
to cancel):Domaine A,Domaine B,...
...
Lorsque les questions ci-dessus sont posées, il est possible d'émettre des certificats correspondant à plusieurs domaines en organisant plusieurs types de domaines séparés par,. Au moment du réglage, il vous sera demandé où vérifier chacun d'eux, mais c'est OK car vous spécifiez le même.
Les certificats pour plusieurs domaines sont définis dans le même fichier au même emplacement que dans le premier cas ci-dessus, donc modifiez nginx.conf comme suit afin qu'il soit le même lors de l'application à plusieurs domaines. Je vais.
http{
...
server {
listen 443 ssl;
server_domaine de nom A;
...
ssl_certificate /etc/letsencrypt/live/[Nom de domaine]/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/[Nom de domaine]/privkey.pem;
...
location ^~ /.well-known/acme-challenge/ {
root /usr/share/nginx/html/.well-known;
}
...
location / {
...
}
}
server {
listen 443 ssl;
server_domaine de nom B;
ssl_certificate /etc/letsencrypt/live/[Nom de domaine]/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/[Nom de domaine]/privkey.pem;
...
location ^~ /.well-known/acme-challenge/ {
root /usr/share/nginx/html/.well-known;
}
...
location / {
...
}
}
}
Ensuite, redémarrez nginx pour que les modifications s'appliquent.
service nginx restart
Si le serveur fonctionne maintenant https://ドメインA et https://ドメインB Si vous pouvez accéder avec un navigateur, les deux sont compatibles SSL.
Si vous définissez le serveur ci-dessus pour qu'il puisse voir plusieurs domaines différents, le paramètre supérieur décrit dans nginx.conf prévaudra. Par exemple, si vous entrez l'URL suivante https://[IPアドレス] Ou https://[DNS名] Si vous entrez, le site du domaine A s'affiche.
La date d'expiration du certificat obtenu par Let's Encrypt est de 3 mois </ font>. Par conséquent, il est nécessaire de renouveler le certificat avant son expiration. Si vous souhaitez renouveler automatiquement le certificat, vous pouvez le renouveler automatiquement en définissant cron.
crontab -e
Ouvrez les paramètres cron avec et définissez comme suit.
0 4 1 * * [certbot-passer avec auto]/certbot-auto renew && service nginx reload
Vous pouvez maintenant renouveler automatiquement le certificat SSL et refléter les paramètres dans nginx. (Le processus ci-dessus est effectué une fois par mois pour vérifier si le certificat a été renouvelé.)
Renouveler automatiquement le certificat SSL Let's Encrypt (Certbot) dans l'environnement proxy inverse Nginx + sans arrêter le serveur Web --Qiita L'histoire d'essayer de Chiffrer en utilisant Nginx comme proxy inverse-Qiita Installez Let's Encrypt sur un serveur fonctionnant sous Nginx et émettez un certificat SSL --UTALI Comment définir l'émission de certificat SSL et le renouvellement automatique avec Let's Encrypt + Nginx --Qiita Le serveur WEB à vitesse légère (nginx) est converti en SSL et HTTP / 2 par Let's encrypt. Ensuite, réglez la cote de sécurité sur A +. --Qiita Publication d’un site Web sécurisé avec le certificat SSL Let ’s Encrypt - Sakura Knowledge
Recommended Posts