The get_option() function in /wp-includes/settings.php needs patching to correctly handle SSL connections. At current, the site will fetch the siteurl option from the db without modification, therefore making all permalinks and page links start with whatever the value of siteurl is (usually containing the http:// prefix).
The return statement of get_option() should be changed from:
return apply_filters( 'option_' . $setting, maybe_unserialize($value) );
to:
if($_SERVER['HTTPS'] == '') {
return apply_filters( 'option_' . $setting, maybe_unserialize($value) );
} else {
return str_replace('http://', 'https://', apply_filters( 'option_' . $setting, maybe_unserialize($value) ));
}