Konfigurasi Apache dengan SSL
Petunjuk berikut mengasumsikan bahwa Anda ingin menjalankan kedua server aman (di port 443
) dan server biasa (di port 80
). Pertama, Anda perlu mengkonfigurasi server untuk mendengarkan di kedua port. Sunting /etc/apache2/ports.conf
(dalam bahasa Debian; ini termasuk dalam apache2.conf
) atau edit /etc/apache2/apache2.conf
langsung untuk memasukkan baris:
Dengarkan 80 Dengarkan 443
Selanjutnya, edit /etc/apache2/sites-enabled/yoursite
untuk menggunakan pengaturan SSL. Memisahkan pengaturan server yang teratur dan aman dengan menggunakan VirtualHosts adalah opsi termudah dalam hal perawatan. Konfigurasi apa pun di luar bagian VirtualHosts (seperti pengaturan ServerAdmin) akan berlaku untuk kedua (dan lainnya) VirtualHosts.
Versi Apache 2.4.8 dan di atasnya mengharapkan sertifikat server Anda digabungkan dengan sertifikat perantara dalam satu file. Untuk mengunduh file yang dirantai dari SSL.com, pilih Nginx
tautan unduhan di akun portal Anda:
Sebagai alternatif, Anda dapat menggabungkan sertifikat yang ada dan file perantara dengan perintah seperti berikut:
$ cat /etc/ssl/private/ca-bundle-client.crt >> /etc/ssl/private/yourdomain.crt
Tambahkan bagian berikut ke file konfigurasi Anda:
# ================================================= # SSL /TLS pengaturan # ================================================ = NameVirtualHost *: 443 DocumentRoot "/ var / www / yoursite" SSLEngine di SSLCertificateFile /etc/ssl/private/yourdomain.chained.crt SSLCertificateKeyFile /etc/ssl/private/myserver.key
Beberapa catatan tentang konfigurasi ini:
SSLEngine
harus diaktifkan agar server menggunakan SSL.DocumentRoot
mengatur direktori root untuk host virtual ini. Ini berarti Anda dapat memisahkan konten aman sepenuhnya dari konten biasa.SSLCertificateFile
harus ditetapkan ke lokasi tempat Anda meletakkan file dengan sertifikat server dan rantai perantara Anda.SSLCertificateKeyFile
harus ditetapkan ke lokasi tempat Anda meletakkan file kunci pribadi Anda.
Tambahkan bagian berikut ke file konfigurasi Anda:
# ================================================= # SSL /TLS pengaturan # ================================================ = NameVirtualHost *: 443 DocumentRoot "/ var / www / yoursite" SSLEngine di SSLCertificateFile /etc/ssl/private/yourdomain.crt SSLCertificateKeyFile /etc/ssl/private/myserver.key SSLCertificateChainFile / etc / ssl / private / ca-bundle- client.crt
Beberapa catatan tentang konfigurasi ini:
SSLEngine
harus diaktifkan agar server menggunakan SSL.DocumentRoot
mengatur direktori root untuk host virtual ini. Ini berarti Anda dapat memisahkan konten aman sepenuhnya dari konten biasa.SSLCertificateFile, SSLCertificateChainFile,
danSSLCertificateKeyFile
harus ditetapkan ke lokasi tempat Anda meletakkan sertifikat, file kunci menengah dan pribadi, masing-masing.
Untuk menjalankan server reguler pada port 80, tambahkan bagian berikut ke file konfigurasi:
NameVirtualHost *: 80 DocumentRoot "/ var / www / yoursite" # Penyiapan direktori khusus, opsi, dll. # Sebagian besar opsi ini kemungkinan akan diatur di luar bagian # VirtualHosts.
Setelah Anda menyimpan file konfigurasi yang diedit, restart server web. Jika Anda memang menggunakan frasa sandi saat membuat sertifikat, Anda harus memasukkannya saat ditantang.
pengujian
Buat halaman index.html dasar di mana pun direktori root untuk server web Anda berada, jika Anda belum memiliki konten di sana.
Lalu arahkan browser web Anda di https://www.yoursite.com
. Anda akan melihat koneksi SSL terbuka dan halaman terkirim. Jika Anda menggunakan sertifikat yang ditandatangani sendiri, browser Anda akan memunculkan peringatan yang memperingatkan Anda bahwa identitas server tidak dapat diverifikasi. Anda dapat memilih untuk melihat dan menerima sertifikat. Jika menggunakan sertifikat eksternal, semuanya harus dilakukan tanpa intervensi.
Pastikan juga bahwa Anda tidak dapat mengakses konten yang dilindungi menggunakan http: //. Jika Anda mencoba, Anda akan mendapatkan pesan kesalahan.
Penyelesaian masalah
Jika tidak berfungsi seperti yang diharapkan, periksa dulu apakah server Anda benar-benar berjalan, menggunakan ps -a | grep apache
. Jika itu tidak mengembalikan apa pun, coba mulai ulang, dan periksa pesan kesalahan di terminal.
Periksa juga bahwa izin pada file kunci dan sertifikat Anda diatur dengan benar (lihat di atas), serta izin pada file HTML pengujian Anda dan direktori induknya.
Selanjutnya, periksa log. Anda harus memeriksa log server utama dan juga log SSL yang Anda siapkan di file konfigurasi di atas. Jika Anda tidak mendapatkan sesuatu yang berguna, coba ubah nilai LogLevel di file konfigurasi Apache2 menjadi "debug", mulai ulang Apache2, dan uji lagi. Ini akan memberikan lebih banyak data logfile.
Jika Anda juga menjalankan server web biasa pada port 80, coba ambil halaman uji melalui http: // daripada https: // untuk membantu mengidentifikasi apakah masalahnya ada pada server web atau dengan koneksi SSL. Perhatikan bahwa dalam penyiapan di atas, direktori root server web berbeda untuk http: // dan https: //, jadi Anda tidak (atau tidak boleh!) Dapat mengakses konten yang sama. Jika halaman pengujian Anda di direktori root http: // berfungsi dengan baik, dan halaman pengujian Anda di direktori root https: // tidak, hal itu dapat membantu Anda menemukan masalahnya.
Jika masalahnya adalah koneksi SSL, alat yang bermanfaat adalah s_client
, yang merupakan alat diagnostik untuk pemecahan masalah TLS/ Koneksi SSL. Penggunaan dasarnya adalah: /usr/bin/openssl s_client -connect localhost:443
. Ada banyak opsi lain juga, di mana Anda dapat memeriksa dokumentasinya. Jika Anda mendapatkan pesan kesalahan, ini akan membantu Anda menemukan masalahnya.