个人工具

“UbuntuHelp:Forum/server/apache2/SSL”的版本间的差异

来自Ubuntu中文

跳转至: 导航, 搜索
(新页面: {{From|https://help.ubuntu.com/community/forum/server/apache2/SSL}} {{Languages|UbuntuHelp:forum/server/apache2/SSL}} === Apache2 SSL === This guide will help you setup SSL with apache2. ...)
 
第3行: 第3行:
 
=== Apache2 SSL ===
 
=== Apache2 SSL ===
 
This guide will help you setup SSL with apache2.
 
This guide will help you setup SSL with apache2.
 
 
For an introduction to OpenSSL see: https://help.ubuntu.com/community/OpenSSL
 
For an introduction to OpenSSL see: https://help.ubuntu.com/community/OpenSSL
 
 
The following bugs are related to this documentation:
 
The following bugs are related to this documentation:
 
 
{|border="1" cellspacing="0"
 
{|border="1" cellspacing="0"
 
|<code><nowiki>ubuntu</nowiki></code>|| https://launchpad.net/ubuntu/+source/apache2/+bug/77675  
 
|<code><nowiki>ubuntu</nowiki></code>|| https://launchpad.net/ubuntu/+source/apache2/+bug/77675  
第13行: 第10行:
 
|<code><nowiki>debian</nowiki></code>|| http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=398520  
 
|<code><nowiki>debian</nowiki></code>|| http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=398520  
 
|}
 
|}
 
 
==== Generate the certificate ====
 
==== Generate the certificate ====
 
 
'''Since Ubuntu 7.04, certificate creation has been changed:'''
 
'''Since Ubuntu 7.04, certificate creation has been changed:'''
 
 
https://bugs.launchpad.net/debian/+source/apache2/+bug/77675/comments/25
 
https://bugs.launchpad.net/debian/+source/apache2/+bug/77675/comments/25
 
 
Old fashioned way:
 
Old fashioned way:
 
 
Create a certificate which are valid for a year.
 
Create a certificate which are valid for a year.
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo apache2-ssl-certificate -days 365
 
sudo apache2-ssl-certificate -days 365
 
</nowiki></pre>  
 
</nowiki></pre>  
 
 
 
 
==== Enable the SSL module ====
 
==== Enable the SSL module ====
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo a2enmod ssl
 
sudo a2enmod ssl
 
</nowiki></pre>
 
</nowiki></pre>
 
 
==== Listen to port 443 ====
 
==== Listen to port 443 ====
 
<pre><nowiki>
 
<pre><nowiki>
 
echo "Listen 443" | sudo tee -a /etc/apache2/ports.conf
 
echo "Listen 443" | sudo tee -a /etc/apache2/ports.conf
 
</nowiki></pre>
 
</nowiki></pre>
 
 
==== Create and enable the SSL site ====
 
==== Create and enable the SSL site ====
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
 
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
 
</nowiki></pre>
 
</nowiki></pre>
 
 
Modify it so it looks something like this
 
Modify it so it looks something like this
 
<pre><nowiki>
 
<pre><nowiki>
第49行: 第35行:
 
<virtualhost *:443>
 
<virtualhost *:443>
 
ServerAdmin webmaster@localhost
 
ServerAdmin webmaster@localhost
 
 
SSLEngine On
 
SSLEngine On
 
SSLCertificateFile /etc/apache2/ssl/apache.pem
 
SSLCertificateFile /etc/apache2/ssl/apache.pem
 
 
DocumentRoot /var/www/
 
DocumentRoot /var/www/
 
<directory />
 
<directory />
第58行: 第42行:
 
AllowOverride None
 
AllowOverride None
 
</directory>
 
</directory>
 
 
<directory /var/www/>
 
<directory /var/www/>
 
Options Indexes FollowSymLinks MultiViews
 
Options Indexes FollowSymLinks MultiViews
第69行: 第52行:
 
#RedirectMatch ^/$ /apache2-default/
 
#RedirectMatch ^/$ /apache2-default/
 
</directory>
 
</directory>
 
 
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
 
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
 
<directory "/usr/lib/cgi-bin">
 
<directory "/usr/lib/cgi-bin">
第77行: 第59行:
 
Allow from all
 
Allow from all
 
</directory>
 
</directory>
 
 
ErrorLog /var/log/apache2/error.log
 
ErrorLog /var/log/apache2/error.log
 
 
# Possible values include: debug, info, notice, warn, error, crit,
 
# Possible values include: debug, info, notice, warn, error, crit,
 
# alert, emerg.
 
# alert, emerg.
 
LogLevel warn
 
LogLevel warn
 
 
CustomLog /var/log/apache2/access.log combined
 
CustomLog /var/log/apache2/access.log combined
 
ServerSignature On
 
ServerSignature On
 
 
Alias /doc/ "/usr/share/doc/"
 
Alias /doc/ "/usr/share/doc/"
 
<directory "/usr/share/doc/">
 
<directory "/usr/share/doc/">
第95行: 第73行:
 
Allow from 127.0.0.0/255.0.0.0 ::1/128
 
Allow from 127.0.0.0/255.0.0.0 ::1/128
 
</directory>
 
</directory>
 
 
</virtualhost>
 
</virtualhost>
 
</nowiki></pre>
 
</nowiki></pre>
 
 
...and enable it
 
...and enable it
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo a2ensite ssl
 
sudo a2ensite ssl
 
</nowiki></pre>
 
</nowiki></pre>
 
 
don't forget to modify /etc/apache2/sites-available/default
 
don't forget to modify /etc/apache2/sites-available/default
 
<pre><nowiki>
 
<pre><nowiki>
 
 
NameVirtualHost *:80
 
NameVirtualHost *:80
 
<virtualhost *:80>
 
<virtualhost *:80>
 
 
</nowiki></pre>
 
</nowiki></pre>
 
 
==== Mod rewrite ====
 
==== Mod rewrite ====
 
It's often desirable to force users to access things like webmail via https.  This can be accomplished with mod_rewrite.
 
It's often desirable to force users to access things like webmail via https.  This can be accomplished with mod_rewrite.
 
 
First you'll have to enable the module
 
First you'll have to enable the module
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo a2enmod rewrite
 
sudo a2enmod rewrite
 
</nowiki></pre>
 
</nowiki></pre>
 
 
Then add the following to /etc/apache2/sites-available/default
 
Then add the following to /etc/apache2/sites-available/default
 
<pre><nowiki>
 
<pre><nowiki>
第128行: 第98行:
 
RewriteLogLevel 2
 
RewriteLogLevel 2
 
</nowiki></pre>
 
</nowiki></pre>
 
 
Create directory for pidfile; it may be missing
 
Create directory for pidfile; it may be missing
 
<pre><nowiki>
 
<pre><nowiki>
第134行: 第103行:
 
sudo chown -R www-data /var/run/apache2
 
sudo chown -R www-data /var/run/apache2
 
</nowiki></pre>
 
</nowiki></pre>
 
 
Don't forget to restart apache
 
Don't forget to restart apache
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo /etc/init.d/apache2 force-reload
 
sudo /etc/init.d/apache2 force-reload
 
</nowiki></pre>
 
</nowiki></pre>
 
 
-----
 
-----
 
[[category:CategoryDocumentation]] [[category:CategoryForum]]
 
[[category:CategoryDocumentation]] [[category:CategoryForum]]
  
 
[[category:UbuntuHelp]]
 
[[category:UbuntuHelp]]

2007年11月30日 (五) 17:20的版本

Apache2 SSL

This guide will help you setup SSL with apache2. For an introduction to OpenSSL see: https://help.ubuntu.com/community/OpenSSL The following bugs are related to this documentation:

ubuntu https://launchpad.net/ubuntu/+source/apache2/+bug/77675
debian http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=398520

Generate the certificate

Since Ubuntu 7.04, certificate creation has been changed: https://bugs.launchpad.net/debian/+source/apache2/+bug/77675/comments/25 Old fashioned way: Create a certificate which are valid for a year.

sudo apache2-ssl-certificate -days 365

Enable the SSL module

sudo a2enmod ssl

Listen to port 443

echo "Listen 443" | sudo tee -a /etc/apache2/ports.conf

Create and enable the SSL site

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl

Modify it so it looks something like this

NameVirtualHost *:443
<virtualhost *:443>
ServerAdmin webmaster@localhost
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
DocumentRoot /var/www/
<directory />
Options FollowSymLinks
AllowOverride None
</directory>
<directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
# Commented out for Ubuntu
#RedirectMatch ^/$ /apache2-default/
</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 /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
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>

...and enable it

sudo a2ensite ssl

don't forget to modify /etc/apache2/sites-available/default

NameVirtualHost *:80
<virtualhost *:80>

Mod rewrite

It's often desirable to force users to access things like webmail via https. This can be accomplished with mod_rewrite. First you'll have to enable the module

sudo a2enmod rewrite

Then add the following to /etc/apache2/sites-available/default

RewriteEngine   on
RewriteCond     %{SERVER_PORT} ^80$
RewriteRule     ^/webmail(.*)$ https://%{SERVER_NAME}/webmail$1 [L,R]
RewriteLog      "/var/log/apache2/rewrite.log"
RewriteLogLevel 2

Create directory for pidfile; it may be missing

sudo mkdir -p /var/run/apache2
sudo chown -R www-data /var/run/apache2

Don't forget to restart apache

sudo /etc/init.d/apache2 force-reload