अपाचे में SSL कैसे कॉन्फ़िगर करें?


10

मैंने आरएचईएल 6 में अपाचे स्थापित किया है। सब कुछ ठीक काम कर रहा है। Https: // localhost: 443 / का उपयोग करने के लिए सभी परिवर्तन और कॉन्फ़िगरेशन क्या होने चाहिए ।

यदि मैं "सुनो 80" को 443 में बदलता हूं तो यह एसएसएल कनेक्शन त्रुटि फेंक रहा है

"त्रुटि 107 (शुद्ध :: ERR_SSL_PROTOCOL_ERROR): एसएसएल प्रोटोकॉल त्रुटि।"

जवाबों:


13

यदि आप उपयोग कर रहे हैं apache2, तो आपको निम्नलिखित कार्य करने होंगे:

चरण 1: अपनी साइट को सुरक्षित करने के लिए उपयोग की जाने वाली चाबियों का उत्पादन करने के लिए ओपनएसएसएल का उपयोग करें। इन कुंजियों का उपयोग तब किया जाता है जब आपकी सुरक्षित साइट पर ट्रैफ़िक को एन्क्रिप्ट और डिक्रिप्ट किया जाता है।

$ openssl genrsa -out mydomain.key 1024

यह कमांड 1024 बिट निजी कुंजी बनाएगी और इसे mydomain.key फ़ाइल में डालेगी।

चरण 2: अपना स्वयं का प्रमाण पत्र बनाएं।

$ openssl req -new -key mydomain.key -x509 -out mydomain.crt

चरण 3: निर्देशिका में निजी कुंजी /etc/apache2/ssl.key/और निर्देशिका में प्रमाण पत्र रखें /etc/apache2/ssl.crt/

ध्यान दें:ssl.key निर्देशिका केवल रूट द्वारा पठनीय होना चाहिए।

चरण 4: अब आपको httpd.confफ़ाइल को संपादित करने की आवश्यकता है /etc/apache2

अब इस फ़ाइल में इस तरह की सामग्री शामिल होनी चाहिए:

NameVirtualHost *:80
NameVirtualHost *:443
Listen 443

<VirtualHost *:80>
ServerAdmin webmaster@mydomain.com
DocumentRoot /srv/www/htdocs/mydomain
ServerName www.mydomain.com
ServerAlias mydomain.com
</VirtualHost>


<VirtualHost *:443>
ServerAdmin webmaster@mydomain.com
DocumentRoot /srv/www/htdocs/mydomain-secure
ServerName mail.mydomain.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl.crt/mydomain.crt
SSLCertificateKeyFile /etc/apache2/ssl.key/mydomain.key
</VirtualHost>


<Directory /srv/www/htdocs/mydomain-secure>
SSLRequireSSL
</Directory>


<VirtualHost *:80>
ServerAdmin webmaster@mydomain.com
DocumentRoot /srv/www/htdocs/mydomain
ServerName mail.mydomain.com
RedirectMatch permanent (/.*) https://mail.mydomain.com$1
</VirtualHost>

पहली तीन पंक्तियाँ आवश्यक नहीं हैं। 1. NameVirtualHostअपदस्थ है और अपाचे के भविष्य के संस्करणों में हटा दिया जाएगा। वर्तमान में यह पहले से ही एक सेशन नहीं है। 2. Listen 443अगर अपाचे पोर्ट 443 पर सुनने के लिए पहले से ही कॉन्फ़िगर किया गया है, तो कई समस्याएं हो सकती हैं, जो कि कई लिनक्स वितरण पर पहले से ही मामला है। केवल तभी जोड़ें जब आप सुनिश्चित हों कि यह रेखा कॉन्फ़िगर नहीं की गई है, जहाँ।
lanoxx

3

न बदलें Listen 80करने के लिए 443में /etc/httpd/conf/httpd.conf। SSL में कॉन्फ़िगर किया गया है /etc/httpd/conf.d/ssl.conf। आरएचईएल 6 पर, एसएसएल स्वयं हस्ताक्षरित प्रमाण पत्र के साथ डिफ़ॉल्ट रूप से सक्षम और सुन रहा है।

आप केवल ब्राउज़ करके SSL का उपयोग करके डिफ़ॉल्ट साइट पर जा सकते हैं https://localhost(आपको URL के अंत में पोर्ट को जोड़ने की आवश्यकता नहीं है)।

यदि आप HTTPS (जो कि मेरा मानना ​​है कि आप प्राप्त करने की कोशिश कर रहे हैं) के लिए सभी HTTP अनुरोधों को अग्रेषित करना चाहते हैं, तो आप या तो एक स्थायी पुनर्निर्देशन जोड़ सकते हैं, या अपाचे मॉड्यूल का उपयोग कर सकते हैं mod_rewrite

सबसे आसान और सबसे सुरक्षित तरीका स्थायी पुनर्निर्देशन स्थापित करना है। वर्चुअल होस्ट नाम सक्षम करें और RedirectVirtualHost में एक निर्देश जोड़ें /etc/httpd/conf/httpd.conf

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName localhost
   Redirect permanent / https://localhost
</VirtualHost>

का उपयोग करते हुए mod_rewrite, आप एक नामित वर्चुअल होस्ट भी बनाते हैं। यह अनुशंसित विधि नहीं है, लेकिन काम करेगा।

NameVirtualHost *:80
<VirtualHost *:80>
   # Enable the Rewrite engine
   RewriteEngine On
   # Make sure the connection is not already HTTPS
   RewriteCond %{HTTPS} !=on
   # This rewrites the URL and forwards to https
   RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>

यदि आप SSL बंद करना चाहते हैं, तो इन पंक्तियों पर टिप्पणी करें /etc/httpd/conf.d/ssl.confऔर Apache को पुनरारंभ करें।

LoadModule ssl_module modules/mod_ssl.so
Listen 443

दरअसल, यदि आप RHEL6 के लिए mod_ssl पैकेज को जोड़ते हैं, तो यह एक /etc/httpd/conf.d/ssl.conf बनाता है, जो मॉड्यूल को लोड करता है और <VirtualHost _default_:443>सभी आवश्यक मापदंडों के साथ प्रत्येक टिप्पणी के साथ सेट करता है । mod_sslयदि आप स्थापित पैकेज स्वचालित रूप से स्थापित नहीं है httpdपैकेज।
jsbillings

1
मैं आपके पुनर्लेखन के लिए सिर्फ एक चीज जोड़ना चाहूंगा: [R=301,L]बस के बजाय का उपयोग करें [R,L], इस तरह से फिर से लिखना HTTP 3xx स्थिति कोड के स्थायी विकल्प का उपयोग कर रहा है ।
दत्तसारी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.