In case this is helpful to someone, a book I bought on .htaccess recommends 
this to require SSL/HTTPS by port:
<IfModule mod_rewrite.c>    RewriteCond %{SERVER_PORT} ^80$    RewriteRule 
^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301, L]</IfModule>
...Jason

      From: YUSUI T <yusui.tomik...@gmail.com>
 To: users@httpd.apache.org 
 Sent: Monday, February 9, 2015 9:53 AM
 Subject: Re: [users@httpd] Redirection via HTTPS
   
2015-02-09 16:31 GMT+09:00 Daniel <dferra...@gmail.com>:
>
>
> 2015-02-08 21:15 GMT+01:00 Yann Ylavic <ylavic....@gmail.com>:
>>
>> On Sun, Feb 8, 2015 at 9:03 PM, Yann Ylavic <ylavic....@gmail.com> wrote:
>> > On Sun, Feb 8, 2015 at 7:36 AM, YUSUI T <yusui.tomik...@gmail.com>
>> > wrote:
>> >>
>> >> root@hostname:~# tail -n 6 /etc/apache2/mods-available/ssl.conf
>> >> <VirtualHost *:443>
>> >>        ServerName www.mydomain.com
>> >>        Redirect / https://www.mydomain.com/
>> >> </VirtualHost>
>> >
>> > You probably want to redirect to https when the request is plain http,
>> > hence :
>> >  <VirtualHost *:80>
>> > above.
>>
>> Sorry, I completely misread your issue, please ignore this.
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org
>> For additional commands, e-mail: users-h...@httpd.apache.org
>>
>
> This is the list of virtualhosts you need. It could be reduced, but for
> educational purposes here is how all virtualhosts should look to represent
> your scenario more or less as I have understood you were asking. As you will
> see there is no need for mod_rewrite at all for this case.
>
> I assumed you want to redirect port 80 to SSL too, if not, ignore the first
> non-ssl virtualhost examples.
>
> ###
> # domain.com port 80 redirects to SSL www.domain.com
> <VirtualHost *:80>
> ServerName domain.com
> DocumentRoot /path/to/docroot
> Redirect / https://www.domain.com/
> </VirtualHost>
>
> ###
> # www.domain.com port 80 redirects to SSL www.domain.com
> <VirtualHost *:80>
> ServerName www.domain.com
> DocumentRoot /path/to/docroot
> Redirect / https://www.domain.com/
> </VirtualHost>
>
> ###
> # domain.com port 443 SSL redirects to SSL www.domain.com
> <VirtualHost *:443>
> ServerName domain.com
> DocumentRoot /path/to/docroot
> SSLEngine on
> SSLCertificateKeyFile /my/path/to/domain.com.key
> SSLCertficicateFile /my/path/do/domain.com.crt
> Redirect / https://www.domain.com/
> </VirtualHost>
>
> ####
> # www.domain.com port 443 SSL
> <VirtualHost *:443>
> ServerName www.domain.com
> DocumentRoot /path/to/docroot
> SSLEngine on
> SSLCertificateKeyFile /my/path/to/www.domain.com.key
> SSLCertificateFile /my/path/do/www.domain.com.crt
>
> ###
> # And your actual configuration from here on
> </VirtualHost>
>
>
> Hope this helps

Thank you for great list of virtualhosts.
What I want to do are 2 things;
1st: redirect from http://mydomain.com(:80) to http://www.mydomain.com(:80)
2nd: redirect from https://mydomain.com(:443) to https://www.mydomain.com(:443)

Your list is great help for me.
I exchanged redirect for rewrite on
/etc/apache2/sites-available/000-default.conf.
But my Google Chrome said an error "ERR_TOO_MANY_REDIRECTS".
Additionally it shows another error when I added # mydomain.com port
443 SSL redirects to SSL www.mydomain.com to
/etc/apache2/mods-available/ssl.conf and restarted apache.

root@hostname:~# service apache2 restart
 * Restarting web server apache2                                        [fail]
 * The apache2 configtest failed.
Output of config test was:
AH00526: Syntax error on line 95 of /etc/apache2/mods-enabled/ssl.conf:
Invalid command 'SSLCertficicateFile', perhaps misspelled or defined
by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
root@hostname:~#

My configurations already have some <VirtualHost>. And I am not sure
where I should add that list...

The followings are my /etc/apache2/sites-available/000-default.conf
and /etc/apache2/mods-available/ssl.conf.

root@hostname:~# cat /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname
and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin cont...@mydomain.com
        DocumentRoot /var/www/html

# mydomain.com port 80 redirects to www.mydomain.com port 80
Redirect / http://www.mydomain.com/

        <Directory "/var/www/html">
            AllowOverride All
            Options +ExecCGI
            Require all granted
        </Directory>

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf

</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
root@hostname:~#
------------------------------------------------------
root@hostname:~# cat /etc/apache2/mods-available/ssl.conf
<IfModule mod_ssl.c>

        # Pseudo Random Number Generator (PRNG):
        # Configure one or more sources to seed the PRNG of the SSL library.
        # The seed data should be of good random quality.
        # WARNING! On some platforms /dev/random blocks if not enough entropy
        # is available. This means you then cannot use the /dev/random device
        # because it would lead to very long connection times (as long as
        # it requires to make more entropy available). But usually those
        # platforms additionally provide a /dev/urandom device which doesn't
        # block. So, if available, use this one instead. Read the mod_ssl User
        # Manual for more details.
        #
        SSLRandomSeed startup builtin
        SSLRandomSeed startup file:/dev/urandom 512
        SSLRandomSeed connect builtin
        SSLRandomSeed connect file:/dev/urandom 512

        ##
        ##  SSL Global Context
        ##
        ##  All SSL configuration in this context applies both to
        ##  the main server and all SSL-enabled virtual hosts.
        ##

        #
        #  Some MIME-types for downloading Certificates and CRLs
        #
        AddType application/x-x509-ca-cert .crt
        AddType application/x-pkcs7-crl .crl

        #  Pass Phrase Dialog:
        #  Configure the pass phrase gathering process.
        #  The filtering dialog program (`builtin' is a internal
        #  terminal dialog) has to provide the pass phrase on stdout.
        SSLPassPhraseDialog exec:/usr/share/apache2/ask-for-passphrase

        #  Inter-Process Session Cache:
        #  Configure the SSL Session Cache: First the mechanism
        #  to use and second the expiring timeout (in seconds).
        #  (The mechanism dbm has known memory leaks and should not be used).
        #SSLSessionCache                dbm:${APACHE_RUN_DIR}/ssl_scache
        SSLSessionCache        shmcb:${APACHE_RUN_DIR}/ssl_scache(512000)
        SSLSessionCacheTimeout  300

        #  Semaphore:
        #  Configure the path to the mutual exclusion semaphore the
        #  SSL engine uses internally for inter-process synchronization.
        #  (Disabled by default, the global Mutex directive
consolidates by default
        #  this)
        #Mutex file:${APACHE_LOCK_DIR}/ssl_mutex ssl-cache


        #  SSL Cipher Suite:
        #  List the ciphers that the client is permitted to negotiate. See the
        #  ciphers(1) man page from the openssl package for list of
all available
        #  options.
        #  Enable only secure ciphers:
        SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5

        #  Speed-optimized SSL Cipher configuration:
        #  If speed is your main concern (on busy HTTPS servers e.g.),
        #  you might want to force clients to specific, performance
        #  optimized ciphers. In this case, prepend those ciphers
        #  to the SSLCipherSuite list, and enable SSLHonorCipherOrder.
        #  Caveat: by giving precedence to RC4-SHA and AES128-SHA
        #  (as in the example below), most connections will no longer
        #  have perfect forward secrecy - if the server's key is
        #  compromised, captures of past or future traffic must be
        #  considered compromised, too.
        #SSLCipherSuite RC4-SHA:AES128-SHA:HIGH:MEDIUM:!aNULL:!MD5
        #SSLHonorCipherOrder on

        #  The protocols to enable.
        #  Available values: all, SSLv3, TLSv1, TLSv1.1, TLSv1.2
        #  SSL v2  is no longer supported
        SSLProtocol all

        #  Allow insecure renegotiation with clients which do not yet
support the
        #  secure renegotiation protocol. Default: Off
        #SSLInsecureRenegotiation on

        #  Whether to forbid non-SNI clients to access name based
virtual hosts.
        #  Default: Off
        #SSLStrictSNIVHostCheck On

</IfModule>

# mydomain.com port 443 SSL redirects to SSL www.mydomain.com
<VirtualHost *:443>
        ServerName mydomain.com
        DocumentRoot /var/www/html
        SSLEngine on
        SSLCertificateKeyFile /etc/ssl/CA/certs/www.mydomain.com/server.key
        SSLCertficicateFile /etc/ssl/CA/certs/www.mydomain.com/server.crt
        Redirect / https://www.mydomain.com/
</VirtualHost>

#test for redirect https
#<VirtualHost *:443>
#        ServerName www.mydomain.com
#        Redirect / https://www.mydomain.com/
#</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
root@hostname:~#

Yusui



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org
For additional commands, e-mail: users-h...@httpd.apache.org



  

Reply via email to