
Saya bukan admin, tetapi terkadang ada tugas yang lebih mudah (dan lebih menarik) untuk diselesaikan sendiri daripada didelegasikan kepada seseorang.
Kadang-kadang, kita perlu "meningkatkan" wadah servlet (paling sering Apache Tomcat) dan mengkonfigurasi proxy untuk itu, penghentian ssl (atau hanya https) dan tutup semuanya dengan firewall (hanya menyisakan ssh dan http / https keluar).
Kebetulan pada minggu terakhir saya memecahkan masalah ini tiga kali (ketika bintang menjadi, dan sebelum itu - dua tahun lalu) dan pengalaman ini ditransformasikan menjadi karya kecil ini.
Jadi, mengingat server Ubuntu 18.04 atau 16.04 (kemungkinan besar Anda tidak akan memiliki masalah dengan versi sebelumnya 14,04 atau lebih). Jika Anda tidak memiliki server Ubuntu, Anda dapat dengan cepat "mengambilnya", misalnya, ke
Digital Ocean (tautan rujukan saya). Setelah menulis artikel, saya perhatikan bahwa DO untuk akun baru memberi $ 100 selama 60 hari untuk dicoba, jika Anda menunjukkan pinjaman.
DNS
Untuk skema sederhana untuk mendapatkan sertifikat https gratis dari Let's Encrypt, kami memerlukan akses ke server DNS. Kami menuliskan alamat IP dari server Ubuntu kami dengan nama, katakanlah, xyz. Katakanlah, untuk jelasnya, bahwa Anda memiliki mydomain.com, mis. Nama DNS server kami adalah xyz.mydomain.com
Instalasi
Instal Apache Tomcat (Saya akan menggunakan versi 8)
apt install tomcat8
Dan sekarang Nginx
apt install nginx-core
Kustomisasi
Nginx
Konfigurasikan Nginx yang sebelumnya terdaftar dalam nama server DNS (file
/ etc / nginx / sites-available / default )
server_name xyz.mydomain.com;
Kami mendaftarkan tautan ke Apache Tomcat yang diinstal (jika Anda belum mengubah apa pun, maka "tinggal" di port 8080). Kita perlu menambahkan blok
upstream ke blok
server .
upstream tomcat { server 127.0.0.1:8080 fail_timeout=0; } server { ...
Buat perubahan pada blok
lokasi dan arahkan semua lalu lintas ke Apache Tomcat
server { ... location / {
Kami memeriksa bahwa semuanya dimasukkan dengan benar
service nginx configtest
dan mulai kembali nginx
service nginx restart
Tomcat Apache
Pada prinsipnya, bagian ini adalah opsional, dan jika itu tidak masalah bagi Anda bahwa alamat ip asli, port, skema untuk mana permintaan akan datang (saya berbicara tentang https) dan server yang diminta dikirim ke kucing jantan, maka langkah ini dapat dihilangkan. Namun, dalam beberapa kasus langkah ini diperlukan (misalnya, untuk Java Web Start alias teknologi JNLP).
Tambahkan ke file
/etc/tomcat8/server.xml di blok
<Host /> .
<Host> ... <Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="x-forwarded-for" remoteIpProxiesHeader="x-forwarded-by" protocolHeader="x-forwarded-proto" /> </Host>
Mulai kembali kucing jantan
service tomcat8 restart
Sertifikat Https
Sertifikat https dengan verifikasi via http akan membantu kami mendapatkan bot certbot, atau lebih tepatnya modifikasinya untuk nginx'a - python-certbot-nginx
Di Ubuntu 18.04, untuk menginstal certbot, jalankan saja
apt install python-certbot-nginx
Untuk Ubuntu 16.04 - Anda harus mengotak-atik menambah repositori, dll. (Lihat
panduan terperinci untuk tautannya ).
Kami meluncurkan
certbot --nginx
Dalam prosesnya, tentukan email Anda, terima perjanjian lisensi, jangan izinkan kami untuk "mencari-cari" data kami dengan Let's Encrypt, konfirmasikan nama DNS yang akan dikeluarkan sertifikat, setujui bahwa bot itu sendiri akan "mengonfigurasi" nginx.
Voila :)
Untuk jaga-jaga, kami memeriksa bahwa pembaruan sertifikat akan berlalu tanpa masalah (sertifikat diterbitkan selama 90 hari dan setelah itu dapat diperpanjang tanpa batas waktu untuk periode yang sama).
certbot renew --dry-run
Dan untuk paranoia internal, kami memeriksa apakah file cron sudah ada
ls -al /etc/cron.d/certbot
Firewall
Kami berhenti dan membuat cadangan (snapshot) dari mesin virtual.
ufw allow ssh ufw allow http ufw allow https ufw default allow outgoing ufw default deny incoming ufw show added
Berdoa!
ufw enable ufw status
Kami memverifikasi bahwa semuanya berhasil - situs dapat diakses melalui https, lalu lintas http diarahkan, dan port selain yang tercantum di atas dan ssh ditutup dengan aman.
PS Saya dengan tulus berharap teks ini dapat bermanfaat bagi seseorang dan saya akan dengan senang hati memberikan kritik yang membangun.
PPS Atau mungkin SEMUA yang mengetahui segalanya akan memberi tahu saya penggantian certbot untuk Windows? Anda perlu mendapatkan sertifikat awal (idealnya, memperbaruinya sesuai jadwal, atau secara umum chic shine) saya mengkonfigurasi nginx sendiri. Ya, saya mengerti bahwa Anda mungkin dapat menggunakan alat ini untuk mengenkripsi + IIS dan menggunakannya dalam skrip saya, tetapi tiba-tiba ada "ideal" yang sudah jadi?