დღეს მინდა გაგიზიაროთ თვითხელმოწერილი SSL სერტიფიკატის შექმნის პროცესი.
ეს ძალიან გამოსადეგი იქნება მათთვის, ვინც ქმნის სხვადასხვა ტიპის პროექტებს, რომლებსაც სჭირდება SSL სერტიფიკატი, ან დგამს პირველ ნაბიჯებს Linux-ის სამყაროში.
ამასთანავე, ეს მეთოდი შწსაძლოა გამოყენებულ იქნას კორპორატიულ ქსელებში, სადაც ყველა კლიენტი ენდობა გამოცემულ თვითხელმოწერილ სერტიფიკატს.
ამ მაგალითს განვახორციელებ Ubuntu 24.04 დისტრიბუტივზე, რომლისთვისაც დაგვჭირდება Apache2 ვებ-სერვერის აპლიკაცია და თავად SSL-ის გამომშვები უტილიტა, რომელსაც OpenSSL ჰქვია. ასევე სასურველია, რომ მკითხველს ჰქონდეს ბრძანებათა ხაზის მინიმალური ცოდნა, რადგან პროცესის ბევრი ნაწილი სწორედ ტერმინალში ხდება.
apache2-ის ინსტალაცია
sudo apt install apache2 apache2-utils

შემდეგი ნაბიჯისთვის, შევიტანთ ცვლილებას /etc/hosts ფაილში, შევქმნით ფსევდო-ლოკალურ დომენს, რომელიც გამოყენებული იქნება საიტზე შესასვლელად. (მე ავირჩიე apache2.loc, თქვენ კი აირჩიეთ თქვენთვის სასურველი).
sudo vim /etc/hosts
საწყისად გამოიყურება ასე:
127.0.0.1 localhost

დავამატოთ ლოკალური დომენი:
127.0.0.1 localhost apache2.loc

სერტიფიკატების შექმნამდე, სასურველია გვქონდეს, მათთვის განკუთვნილი ცალკე დირექტორია. ამისათვის გამოვიყენოთ დაბლა მოცემული ბრძანება:
sudo mkdir -p /etc/apache2/ssl
გადავინაცვლოთ მასში:
cd /etc/apache2/ssl

ყურადღება! : ტერმინალში შეიყვანეთ ბრძანება:
openssl version
თუ, ტერმინალი გამოიტანს ცარიელ ხაზს ან შეტყობინებას, რომ openssl სისტემაში ვერ აღმოაჩინა, საჭიროა მისი ინსტალაცია ქვემოთ მოცემული ბრძანებით. წინააღმდეგ შემთხვევაში, შეგიძლიათ ეს ეტაპი გამოტოვოთ.
sudo apt install openssl
პრივატული გასაღების (Private Key) გენერირება.
sudo openssl genrsa -out apache2.key 2048
ბრძანების განმარტება
- openssl genrsa — ქმნის RSA ტიპის პირად გასაღებს.
- -out apache2.key — განსაზღვრავს, რომ გასაღები ჩაიწეროს ფაილში დასახელებით apache2.key.
- 2048 — გასაღების სიგრძე ბიტებში (შენიშვნა: 2048 ბიტი არის მინიმუმი უსაფრთხოების სტანდარტი).
შედეგი: პირადი გასაღები, რომელიც გამოიყენება სერტიფიკატის შექმნასა და კავშირის დაშიფვრაში.
სერტიფიკატის შექმნის მოთხოვა:
sudo openssl req -new -key apache2.key -out apache2.csr
ბრძანების განმარტება
- openssl req -new — ქმნის ახალ Certificate Signing Request (CSR), ანუ სერტიფიკატისთვის მოთხოვნას.
- -key apache2.key — მიანიშნებს ჩვენს მიერ შექმნილ გასაღებზე.
- -out apache2.csr — ფაილი, სადაც ჩაიწერება CSR.
ყურადღება! : გარდა დაბლა მოცემული ველისა, ყველა სხვა ველი შეგიძლიათ დატოვოთ ცარიელი:
Common Name (e.g. server FQDN or YOUR name) []:apache2.loc

თვითხელმოწერილი სერტიფიკატის შექმნა.
sudo openssl x509 -req -days 365 -in apache2.csr -signkey apache2.key -out apache2.crt
ბრძანების განმარტება
- openssl x509 -req — მიუთითებს, რომ გვინდა თვითხელმოწერილი სერტიფიკატი.
- -days 365 — სერტიფიკატის ვადა (365 დღე).
- -in apache2.csr — შემავალი CSR ფაილი.
- -signkey apache2.key — ჩვენ ვაწერთ ხელს სერტიფიკატს, ჩვენი პირადი გასაღების მეშვეობით, რაც მას თვითხელმოწერილს ხდის.
- -out apache2.crt — ფაილი, სადაც ჩაიწერება მზა სერტიფიკატი.
შედეგი: თვითხელმოწერილი სერტიფიკატი, რომლის გამოყენებაც შესაძლებელია HTTPS-ისთვის Apache სერვერზე.
არსებული VirtualHost საკონფიგურაციო ფაილის რედაქტირება, რათა გავმართოთ ჩვენი SSL სერტიფიკატი.
sudo vim /etc/apache2/sites-available/default-ssl.conf
მზა საკონფიგურაციო ფაილი (თუ თქვენ მიუთითეთ სხვა ფსევდო-ლოკალური დომენი, შეცვალეთ იგი ფაილში).
<VirtualHost *:443>
ServerName apache2.loc
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache2.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache2.key
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/apache2-error.log
CustomLog ${APACHE_LOG_DIR}/apache2-access.log combined
</VirtualHost>
საწყისად Apache2 მუშაობს HTTP-ზე, და იმისათვის, რომ სერვერმა შეძლოს მუშაობა SSL-თან, საჭიროა ჩავრთოთ შესაბამისი მოდული, რომელიც უზრუნველყოფს SSL მხარდაჭერას.
sudo a2enmod ssl
ასევე გავააქტიუროთ ჩვენი VirtualHost ფაილი, რომელშიც შევიტანეთ ცვლილება.
sudo a2ensite default-ssl.conf
და ბოლოს გადავტვირთოთ Apache2, რათა ჩვენს მიერ შეტანილი ცვლილებები შევიდეს ძალაში.
sudo systemctl reload apache2.service
ახლა შეგიძლიათ გახსნათ თქვენი ბრაუზერი და ჩაწეროთ მასში URL, მაგალითად:
https://apache2.loc/

გაამახვილეთ ყურადღება /-ზე ბმულის ბოლოში, განსაკუთრებით მაშინ თუ ამ ქმედებას თქვენს ლოკალურ მანქანაზე ანხორციელებთ.
ბრაუზერში იხილავთ შეტყობინებას “Potential security risk” ან რაიმე მსგავსი. ნუ შეშინდებით ეს ნორმალურია, რადგან ბრაუზერები არ აღიარებენ თვითგამოწერილ სერტიფიკატებს ავტომატურად.
დააჭირეთ “Advanced“, შემდეგ კი “Accept the risk and continue“.
ახლა თქვენ იხილავთ, რომ ვებ-გვერდი გაიხსნა და მუშაობს SSL-ის გამოყენებით.
მადლობა ყურადღებისათვის! არ დაიზაროთ კომენტარები.