Поиск по сайту:

Как настроить Apache с бесплатным подписанным SSL-сертификатом на VPS


Примечание. Возможно, вы захотите использовать Let’s Encrypt вместо статьи Как защитить Apache с помощью Let’s Encrypt в Ubuntu 14.04

Предпосылки

Прежде чем мы начнем, вот веб-инструменты, которые вам понадобятся для этого урока:

<ol>
    <li><a href="https://www.google.com/intl/en/chrome/browser">Google Chrome</a> browser</li>
    <li>Apache installed on your VPS (cloud server)</li>
    <li>A domain name you own</li>
    <li>Access to an email address at that domain, either:
        <ol>
            <li>postmaster@duable.co</li>
            <li>hostmaster@duable.co</li>
            <li>webmaster@duable.co</li>
        </ol>
    </li>
</ol>

StartSSL.com предлагает абсолютно бесплатные проверенные (вашим пользователям не придется видеть эти страшные красные экраны с надписью «этому сайту больше не доверяют») SSL-сертификаты, которые вы можете использовать на своем веб-сайте. Это отличная сделка, так как большинство компаний берут 50-60 долларов за аналогичные услуги. Бесплатная версия немного сложна в настройке, но она того стоит.

Чтобы начать, перейдите к панели управления в верхней части страницы.

Убедитесь, что вы используете Google Chrome

<ol>
    <li>Choose the <strong>Express Signup.</strong> option</li>
    <li>Enter your personal information, and click continue.</li>
    <li>You'll get an email with a verification code inside it shortly. Copy and paste that email into the form on StartSSL's page.</li>
    <li>They will review your request for a certificate and then send you an email with the new info. This process might take as long as 6 hours though, so be patient.</li>
    <li>Once the email comes, use the link provided and the new authentication code (at the bottom of the email) to continue to the next step.</li>
    <li>They will ask you to Generate a private key and you will be provided with the choice of "High" or "Medium" grade. Go ahead and choose "High".</li>
    <li>Once your key is ready, click Install.</li>
    <li>Chrome will show a popdown that says that the certificate has been succesfully installed to Chrome.</li>
</ol>


<p>This means your browser is now authenticated with your new certificate
and you can log into the StartSSL authentication areas using your new
certificate. Now, we need to get a properly formatted certificate set up for
use on your VPS. Click on the <a
href="https://www.startssl.com/?app=12">Control panel</a> link again, and
choose the Authenticate option. Chrome will show a popup asking if you want
to authenticate and will show the certificate you just installed. Go ahead
and authenticate with that certificate to enter the control panel.</p>

<p>You will need to validate your domain name to prove that you own the
domain you are setting up a certificate for. Click over to the Validations
Wizard in the <a href="https://www.startssl.com/?app=12">Control panel</a>
and set Type to Domain Name Validation. You'll be prompted to choose
from an email at your domain, something like postmaster@yourdomain.com.</p>

Проверьте почтовый ящик на наличие выбранного вами адреса электронной почты. Вы получите еще одно письмо с подтверждением на этот адрес, поэтому, как и раньше, скопируйте и вставьте код подтверждения на веб-сайт StartSSL.

Затем перейдите на вкладку «Мастер сертификатов» и выберите создание сертификата SSL/TLS веб-сервера.

Нажмите «Продолжить», а затем введите безопасный пароль, оставив другие настройки без изменений.

Вам будет показано текстовое поле, содержащее ваш закрытый ключ. Скопируйте и вставьте содержимое в текстовый редактор и сохраните данные в файл с именем ssl.key.

Когда вы нажмете «Продолжить», вас спросят, для какого домена вы хотите создать сертификат:

Выберите свой домен и перейдите к следующему шагу.

Вас спросят, для какого поддомена вы хотите создать сертификат. В большинстве случаев вы хотите выбрать здесь www, но если вы хотите использовать другой поддомен с SSL, вместо этого введите его здесь:

StartSSL предоставит вам новый сертификат в текстовом поле так же, как это было сделано для закрытого ключа:

Снова скопируйте и вставьте в текстовый редактор, на этот раз сохранив его как ssl.crt.

Вам также понадобится StartCom Root CA и StartSSLs Class 1 Intermediate Server CA для аутентификации вашего веб-сайта, поэтому для последнего шага перейдите на панель инструментов и выберите StartCom CA Certificates:

На этом экране щелкните правой кнопкой мыши и сохраните как два файла:

<ul>
    <li>StartCom Root CA (PEM Encoded) (save to ca.pem)</li>
    <li>Class 1 Intermediate Server CA (save to sub.class1.server.ca.pem)</li>
</ul>

Из соображений безопасности StartSSL шифрует ваш закрытый ключ (файл ssl.key), но вашему веб-серверу нужна его незашифрованная версия для обработки шифрования ваших сайтов. Чтобы расшифровать его, скопируйте его на свой сервер и используйте следующую команду, чтобы расшифровать его в файл private.key:

openssl rsa -in ssl.key -out private.key

OpenSSL запросит у вас пароль, поэтому введите его вместе с паролем, который вы ввели на веб-сайте StartSSL.

На этом этапе у вас должно быть пять файлов. Если вы что-то пропустили, перепроверьте предыдущие шаги и повторно загрузите их:

<ul>
    <li>ca.pem - StartSSL's Root certificate</li>
    <li>private.key - The unencrypted version of your private key (be very careful no one else has access to this file!)</li>
    <li>sub.class1.server.ca.pem - The intermediate certificate for StartSSL</li>
    <li>ssl.key - The encrypted version of your private key (does not need to be copied to server)</li>
    <li>ssl.crt - Your new certificate</li>
</ul>

Вы можете отказаться от файла ssl.key. Если вы еще не скопировали другие файлы на свой сервер, загрузите их туда сейчас:

scp {ca.pem,private.key,sub.class1.server.ca.pem,ssl.crt} YOURSERVER:~ 
<h2>Activating the certificate in Apache</h2>

Иметь сертификат бесполезно, если вы не можете его использовать. В этом разделе объясняется, как настроить Apache для использования вашего нового сертификата SSL. Эти инструкции предназначены для Apache, работающего на последних версиях Ubuntu VPS. Для других дистрибутивов или веб-серверов на основе Linux вам придется соответствующим образом настроить.

Во-первых, создайте папки, где хорошо хранить ключи. Включите SSL-модуль Apache и перезапустите Apache.

sudo a2enmod ssl
sudo service apache2 restart
sudo mkdir -p /etc/apache2/ssl

Скопируйте файлы, которые вы настроили в предыдущем разделе, в папку /etc/apache2/ssl на вашем VPS.

sudo mkdir -p /etc/apache2/ssl
cp ~/{ca.pem,private.key,sub.class1.server.ca.pem,ssl.crt} /etc/apache2/ssl

Выполнять:

ls /etc/apache2/ssl

И он должен вернуться:

ca.pem
ssl.crt
private.key
sub.class1.server.ca.pem

Теперь откройте файл конфигурации apache2. Если вы еще не изменили конфигурацию по умолчанию, введите:

nano /etc/apache2/sites-enabled/000-default

Это должно выглядеть примерно так:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Скопируйте весь приведенный выше сценарий (из в ), вставьте его ниже существующего и измените верхнюю строку с:

<VirtualHost *:80>

к

<VirtualHost *:443>

И добавьте следующие строки после строки :

SSLEngine on                                                                
SSLProtocol all -SSLv2                                                      
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM                

SSLCertificateFile /etc/apache2/ssl/ssl.crt                           
SSLCertificateKeyFile /etc/apache2/ssl/private.key                        
SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem 

Конечный результат должен выглядеть так:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

<VirtualHost *:443>
    SSLEngine on                                                                
    SSLProtocol all -SSLv2                                                      
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM                

    SSLCertificateFile /etc/apache2/ssl/ssl.crt                           
    SSLCertificateKeyFile /etc/apache2/ssl/private.key                        
    SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem 
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Сохраните файлы и перезапустите Apache с помощью:

sudo service apache2 restart

Вы можете проверить файлы журнала Apache, чтобы увидеть, есть ли какие-либо ошибки остановки шоу с помощью этой команды:

cat /var/log/apache2/error.log

Если все выглядит хорошо, попробуйте получить доступ к своему сайту в веб-браузере, используя URL-адрес HTTPS (например, https://www.YOURSITE.com). Когда ваш сайт загрузится, вы должны увидеть маленький зеленый значок замка рядом с URL-адресом. Нажмите на нее, и вы должны увидеть следующее. На вкладке соединений должно быть указано, что подлинность сайтов подтверждена StartCom.

Поздравляем! У вас все настроено!

<p>Reference Links:</p>

Вот некоторые из других сообщений, с которыми я консультировался, когда собирал это вместе. Если вы столкнетесь с какими-либо проблемами, они могут послужить источником вдохновения для их устранения:

<ul>
    <li><a href="http://www.debian-administration.org/articles/349">Apache SSL Configuration</a></li>
    <li><a href="http://jasoncodes.com/posts/startssl-free-ssl">StartSSL Apache Guides</a></li>
</ul>