
لست مسؤولاً ، لكن في بعض الأحيان توجد مهام أسهل (وأكثر إثارة للاهتمام) لحل نفسي من تفويض لشخص ما.
في بعض الأحيان ، نحتاج إلى "رفع" حاوية servlet (غالبًا Apache Tomcat) وتكوين الوكلاء لذلك ، إنهاء ssl (أو ببساطة https) وتغطية كل ذلك بجدار حماية (مع ترك ssh و http / https للخارج فقط).
لقد حدث أنني في الأسبوع الماضي قمت بحل هذه المشكلة ثلاث مرات (كما أصبحت النجوم ، وقبل ذلك - قبل عامين) وتحولت هذه التجربة إلى هذا التأليف الصغير.
لذلك ، نظرًا لخادم Ubuntu 18.04 أو 16.04 (على الأرجح لن تواجه مشكلات مع الإصدارات السابقة 14.04 أو نحو ذلك). إذا لم يكن لديك خادم Ubuntu ، فيمكنك "استلامه" بسرعة ، على سبيل المثال ، إلى
المحيط الرقمي (رابط الإحالة الخاص بي). بعد كتابة المقالة ، لاحظت أن DO للحسابات الجديدة تمنح 100 دولار لمدة 60 يومًا للمحاولة ، إذا أشرت إلى قرض.
DNS
للحصول على مخطط بسيط للحصول على شهادة https مجانية من Let's Encrypt ، نحتاج إلى الوصول إلى خادم DNS. نكتب فيه عنوان IP لخادم أوبونتو الخاص بنا مع الاسم ، على سبيل المثال ، xyz. دعنا نقول ، بالتأكيد ، أن لديك mydomain.com ، أي سيكون اسم DNS لخادمنا هو xyz.mydomain.com
التثبيت
تثبيت Apache Tomcat (سأستخدم الإصدار 8)
apt install tomcat8
والآن Nginx
apt install nginx-core
التخصيص
Nginx
تكوين Nginx المسجلة مسبقًا في اسم خادم DNS (ملف
/ etc / nginx / مواقع متاحة / افتراضي )
server_name xyz.mydomain.com;
نحن نسجل الرابط إلى Apache Tomcat المثبّتة (إذا لم تقم بتغيير أي شيء ، فسيكون "حيًا" على المنفذ 8080). نحن بحاجة إلى إضافة كتلة
upstream إلى كتلة
الخادم .
upstream tomcat { server 127.0.0.1:8080 fail_timeout=0; } server { ...
قم بإجراء تغييرات على كتلة
الموقع وإعادة توجيه كل حركة المرور إلى Apache Tomcat
server { ... location / {
نتحقق من أن كل شيء تم إدخاله بشكل صحيح
service nginx configtest
وإعادة تشغيل إنجن إكس
service nginx restart
اباتشي tomcat
من حيث المبدأ ، يعد هذا الجزء اختياريًا ، وإذا لم يكن من المهم بالنسبة لك عناوين IP الحقيقية والمنافذ والنظام الذي يأتي من أجله الطلب (أتحدث عن https) والخادم المطلوب إرساله إلى tomcat ، فيمكن حذف هذه الخطوة. ومع ذلك ، في بعض الحالات ، تكون هذه الخطوة مطلوبة (على سبيل المثال ، لتكنولوجيا Java Web Start aka JNLP).
أضف إلى ملف
/etc/tomcat8/server.xml في كتلة
<المضيف /> .
<Host> ... <Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="x-forwarded-for" remoteIpProxiesHeader="x-forwarded-by" protocolHeader="x-forwarded-proto" /> </Host>
أعد تشغيل tomcat
service tomcat8 restart
شهادة المتشعب
سوف تساعدنا شهادة https مع التحقق عبر http في الحصول على روبوت certbot ، أو بالأحرى تعديله لـ nginx'a - python-certbot-nginx
على أوبونتو 18.04 ، لتثبيت certbot ، مجرد تشغيل
apt install python-certbot-nginx
بالنسبة إلى Ubuntu 16.04 - يتعين عليك العبث بإضافة مستودعات ، وما إلى ذلك (انظر
الدليل التفصيلي للرابط ).
نطلق
certbot --nginx
في هذه العملية ، حدد بريدك الإلكتروني ، وقبول اتفاقية الترخيص ، ولا تسمح لنا "بتدفق" بياناتنا باستخدام Let's Encrypt ، وتأكيد اسم DNS الذي سيتم إصدار الشهادة إليه ، وتوافق على أن الروبوت نفسه سوف "يهيئ" nginx.
فويلا :)
في حالة وجودها ، نتحقق من أن تجديد الشهادة سيمر دون مشاكل (تصدر الشهادة لمدة 90 يومًا وبعد ذلك يمكن تمديدها إلى أجل غير مسمى لنفس الفترة).
certbot renew --dry-run
وبالنسبة للجنون العظمة الداخلي ، نتحقق من وجود ملف cron في مكانه
ls -al /etc/cron.d/certbot
جدار الحماية
نتوقف ونعمل نسخة احتياطية (لقطة) من الجهاز الظاهري.
ufw allow ssh ufw allow http ufw allow https ufw default allow outgoing ufw default deny incoming ufw show added
نصلي!
ufw enable ufw status
نحن نتحقق من أن كل شيء تم تنفيذه - يمكن الوصول إلى الموقع عبر https ، تتم إعادة توجيه حركة مرور http ، ويتم إغلاق المنافذ الأخرى بخلاف تلك المذكورة أعلاه و ssh بشكل آمن.
ملحوظة: آمل بإخلاص أن يكون هذا النص مفيدًا لشخص ما وسأكون سعيدًا بالنقد البناء.
PPS أو ربما يخبرني ALL المعروف عن استبدال certbot لنظام التشغيل Windows؟ تحتاج إلى الحصول على الشهادة الأولية (من الناحية المثالية ، تحديثها وفقًا للجدول الزمني ، أو بشكل عام التألق الأنيق) قمت بتهيئة nginx بنفسي. نعم ، أفهم أنه من المحتمل أن تتمكن من استخدام الأداة لتشفير + IIS واستخدامها في البرنامج النصي الخاص بي ، ولكن فجأة هناك "مثالي" جاهز؟