I never like typing a password into a non-SSL site, no matter how trivial it is. In order to give my own site this ability I simply used mod_rewrite to force requests to WordPress’s admin pages to go over SSL.
The .htaccess file for the site looks like this:
# BEGIN WordPress
RewriteEngine On
RewriteBase /evan/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /evan/index.php [L]
# END WordPress
To force the admin pages to SSL, just add these lines under RewriteEngine On:
RewriteCond %{HTTPS} !=on
RewriteRule ^wp-(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
Edit – The above code screws up uploads (which go into the /wp-content directory). I replaced that with the following and it Worked As Intended.
RewriteCond %{HTTPS} !=on
RewriteRule ^wp-login(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteCond %{HTTPS} !=on
RewriteRule ^wp-admin(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
That’s pretty much it. If your request starts with “wp-” it’ll redirect you to the same URL, but starting with https://. Problem solved. You do need to make sure you have an SSL VirtualHost pointing to your WordPress DocumentRoot so that https://yoursite.com goes to the same place as http://yoursite.com.
Thanks for posting this, it really helped me out! I am running WordPress 3.04 on Debian Squeeze so I modified your work as follows:
RewriteRule ^/?(wp-admin/|wp-login\.php) https://%{HTTP_HOST}%{REQUEST_URI}%{QUERY_STRING} [R=301,L] to force https and
RewriteRule !^/?(wp-admin/|wp-login\.php) http://%{HTTP_HOST}%{REQUEST_URI}%{QUERY_STRING} [R=301,L] to force back to http after you are finished with the admin work.