ຊຸດ RHCE: ປະຕິບັດ HTTPS ຜ່ານ TLS ໂດຍໃຊ້ບໍລິການຄວາມປອດໄພຂອງເຄືອຂ່າຍ (NSS) ສຳ ລັບ Apache - ພາກ 8


ຖ້າທ່ານເປັນຜູ້ຄຸ້ມຄອງລະບົບທີ່ຮັບຜິດຊອບໃນການຮັກສາແລະຮັບປະກັນເຄື່ອງແມ່ຂ່າຍເວັບໄຊຕ໌, ທ່ານບໍ່ສາມາດທີ່ຈະບໍ່ທຸ່ມເທຄວາມພະຍາຍາມທີ່ດີທີ່ສຸດຂອງທ່ານເພື່ອຮັບປະກັນວ່າຂໍ້ມູນທີ່ບໍລິການໂດຍຜ່ານຫຼືຜ່ານເຊີຟເວີຂອງທ່ານຈະຖືກປົກປ້ອງຕະຫຼອດເວລາ.

ເພື່ອໃຫ້ການສື່ສານທີ່ມີຄວາມປອດໄພຫຼາຍຂື້ນລະຫວ່າງລູກຄ້າເວັບແລະເຄື່ອງແມ່ຂ່າຍ, ໂປແກຼມ HTTPS ແມ່ນເກີດມາຈາກການລວມກັນຂອງ HTTP ແລະ SSL (Secure Sockets Layer) ຫຼື ໃໝ່ ກວ່ານີ້, TLS (Transport Layer Security).

ເນື່ອງຈາກການລະເມີດຄວາມປອດໄພທີ່ຮ້າຍແຮງບາງຢ່າງ, SSL ໄດ້ຖືກຄັດເລືອກເພື່ອໃຫ້ TLS ເຂັ້ມແຂງຂື້ນ. ດ້ວຍເຫດຜົນດັ່ງກ່າວ, ໃນບົດຄວາມນີ້ພວກເຮົາຈະອະທິບາຍວິທີການຮັກສາການເຊື່ອມຕໍ່ລະຫວ່າງເຄື່ອງແມ່ຂ່າຍເວັບຂອງທ່ານແລະລູກຄ້າທີ່ໃຊ້ TLS.

ຄຳ ແນະ ນຳ ນີ້ສົມມຸດວ່າທ່ານໄດ້ຕິດຕັ້ງແລະ ກຳ ຫນົດຄ່າເຊີຟເວີເວັບ Apache ຂອງທ່ານແລ້ວ. ຖ້າບໍ່, ກະລຸນາອ້າງອີງໃສ່ບົດຄວາມຕໍ່ໄປນີ້ໃນເວບໄຊທ໌ນີ້ກ່ອນທີ່ຈະ ດຳ ເນີນການຕໍ່ໄປ.

<

  • ຕິດຕັ້ງ LAMP (Linux, MySQL/MariaDB, Apache ແລະ PHP) ໃນ RHEL/CentOS 7
  • ການຕິດຕັ້ງ OpenSSL ແລະ Utilities

    ກ່ອນອື່ນ ໝົດ, ຕ້ອງໃຫ້ແນ່ໃຈວ່າ Apache ກຳ ລັງໃຊ້ງານແລະທັງ http ແລະ https ແມ່ນຖືກອະນຸຍາດຜ່ານທາງ firewall:

    # systemctl start http
    # systemctl enable http
    # firewall-cmd --permanent –-add-service=http
    # firewall-cmd --permanent –-add-service=https
    

    ຈາກນັ້ນຕິດຕັ້ງແພັກເກດທີ່ ຈຳ ເປັນ:

    # yum update && yum install openssl mod_nss crypto-utils
    

    ສິ່ງທີ່ ສຳ ຄັນ: ກະລຸນາຮັບຊາບວ່າທ່ານສາມາດທົດແທນ mod_nss ດ້ວຍ mod_ssl ໃນ ຄຳ ສັ່ງຂ້າງເທິງຖ້າທ່ານຕ້ອງການໃຊ້ຫ້ອງສະ ໝຸດ OpenSSL ແທນ NSS (Network Security Service) ເພື່ອປະຕິບັດ TLS (ເຊິ່ງການ ນຳ ໃຊ້ຈະຖືກປະໄວ້ໃຫ້ທ່ານທັງ ໝົດ, ແຕ່ພວກເຮົາຈະໃຊ້ NSS ໃນບົດຄວາມນີ້ຍ້ອນວ່າມັນແຂງແຮງກວ່າເກົ່າ, ຍົກຕົວຢ່າງ, ມັນສະ ໜັບ ສະ ໜູນ ມາດຕະຖານ cryptography ທີ່ຜ່ານມາເຊັ່ນ: PKCS # 11).

    ສຸດທ້າຍ, ຖອນການຕິດຕັ້ງ mod_ssl ຖ້າທ່ານເລືອກທີ່ຈະໃຊ້ mod_nss, ຫຼື viceversa.

    # yum remove mod_ssl
    

    ການຕັ້ງຄ່າ NSS (Network Security Service)

    ຫຼັງຈາກ mod_nss ຖືກຕິດຕັ້ງແລ້ວ, ເອກະສານການຕັ້ງຄ່າເລີ່ມຕົ້ນຂອງມັນຖືກສ້າງຂື້ນເປັນ /etc/httpd/conf.d/nss.conf. ທ່ານຄວນຮັບປະກັນວ່າທິດທາງຂອງ Listen ແລະ VirtualHost ທັງ ໝົດ ຊີ້ໄປທີ່ port 443 (port ຕົ້ນສະບັບ ສຳ ລັບ HTTPS):

    Listen 443
    VirtualHost _default_:443
    

    ຫຼັງຈາກນັ້ນເລີ່ມຕົ້ນ Apache ແລະກວດເບິ່ງວ່າໂມດູນ mod_nss ໄດ້ຖືກໂຫລດແລ້ວບໍ:

    # apachectl restart
    # httpd -M | grep nss
    

    ຕໍ່ໄປ, ການດັດແກ້ຕໍ່ໄປນີ້ຄວນເຮັດໃນ /etc/httpd/conf.d/nss.conf ເອກະສານການຕັ້ງຄ່າ:

    1. ຊີ້ບອກໄດເລກະທໍລີຖານຂໍ້ມູນ NSS. ທ່ານສາມາດໃຊ້ໄດເລກະທໍລີເລີ່ມຕົ້ນຫຼືສ້າງໄດເລກະທໍລີ ໃໝ່. ໃນບົດແນະ ນຳ ນີ້ພວກເຮົາຈະ ນຳ ໃຊ້ຄ່າເລີ່ມຕົ້ນ:

    NSSCertificateDatabase /etc/httpd/alias
    

    2. ຫຼີກລ້ຽງການປ້ອນຂໍ້ມູນ passphrase ຄູ່ມືໃນແຕ່ລະລະບົບເລີ່ມຕົ້ນໂດຍບັນທຶກລະຫັດຜ່ານໃສ່ຖານຂໍ້ມູນໃນ /etc/httpd/nss-db-password.conf:

    NSSPassPhraseDialog file:/etc/httpd/nss-db-password.conf
    

    ບ່ອນທີ່ /etc/httpd/nss-db-password.conf ມີພຽງແຕ່ສາຍຕໍ່ໄປນີ້ແລະ mypassword ແມ່ນລະຫັດຜ່ານທີ່ທ່ານຈະຕັ້ງຕໍ່ມາ ສຳ ລັບຖານຂໍ້ມູນ NSS:

    internal:mypassword
    

    ນອກຈາກນັ້ນ, ສິດແລະຄວາມເປັນເຈົ້າຂອງຂອງມັນຄວນຈະຖືກ ກຳ ນົດໃຫ້ເປັນ 0640 ແລະຮາກ: apache, ຕາມ ລຳ ດັບ:

    # chmod 640 /etc/httpd/nss-db-password.conf
    # chgrp apache /etc/httpd/nss-db-password.conf
    

    3. Red Hat ແນະ ນຳ ໃຫ້ປິດ SSL ແລະທຸກໆລຸ້ນຂອງ TLS ກ່ອນ ໜ້າ TLSv1.0 ເນື່ອງຈາກຄວາມອ່ອນແອຂອງ POODLE SSLv3 (ຂໍ້ມູນເພີ່ມເຕີມທີ່ນີ້).

    ໃຫ້ແນ່ໃຈວ່າທຸກໆຕົວຢ່າງຂອງ NSSProtocol directive ອ່ານດັ່ງຕໍ່ໄປນີ້ (ທ່ານມີແນວໂນ້ມທີ່ຈະຊອກຫາພຽງແຕ່ຖ້າທ່ານບໍ່ໄດ້ເປັນເຈົ້າພາບກັບໂຮດຕິ້ງເສີຍໆອື່ນໆ):

    NSSProtocol TLSv1.0,TLSv1.1
    

    4. Apache ຈະປະຕິເສດທີ່ຈະເລີ່ມຄືນ ໃໝ່ ຍ້ອນວ່ານີ້ແມ່ນໃບຢັ້ງຢືນທີ່ເຊັນດ້ວຍຕົນເອງແລະຈະບໍ່ຮັບຮູ້ຜູ້ອອກໃບຢັ້ງຢືນທີ່ຖືກຕ້ອງ. ດ້ວຍເຫດຜົນນີ້, ໃນກໍລະນີພິເສດນີ້ທ່ານຈະຕ້ອງຕື່ມ:

    NSSEnforceValidCerts off
    

    5. ເຖິງແມ່ນວ່າບໍ່ໄດ້ ກຳ ນົດຢ່າງເຄັ່ງຄັດ, ມັນເປັນສິ່ງ ສຳ ຄັນທີ່ຈະຕັ້ງລະຫັດຜ່ານ ສຳ ລັບຖານຂໍ້ມູນ NSS:

    # certutil -W -d /etc/httpd/alias