Оказывается, что более трудно сделать это с rsync
чем с другими инструментами. Корректный ответ для rsync
Steven Monai, но самый легкий способ сделать это должно использовать также cp -al
или pax -rwl
в системах, где -l
не допустимая опция для cp
:
pax -rwl $DATA $DATA/../upgrade_tmp
или
cp -al $DATA/ $DATA/../upgrade_tmp/
OK so Christopher Perrin put me on the right track with SSLCertificateChainFile
- thanks. Here are the specifics, in case they help someone else. I'm using Plesk 11, and obviously the paths I refer to will be different for others.
When I create the subdomain ssltest.bblhosted.com, Plesk creates a file at /var/www/vhosts/ssltest.bblhosted.com/conf/13558069200.18494000_httpd.include
(or similar). This file effectively serves the purpose of a vhost.conf file (or vhost_ssl.conf), except that it's automatically generated by plesk, and will be automatically overriden each time you change settings through Plesk.
The file contains the line:
SSLCertificateFile /usr/local/psa/var/certificates/cert-Eq8jue
which shows where to find my SSL certificate. What it doesn't contain is a line indicating where to find the CA certificate. So it should contain the line:
SSLCertificateChainFile /usr/local/psa/var/certificates/cert-t8ReAO
(Obviously the path should point to your own CA Certificate). As far as I can tell, the fact that this line is not included is a bug in Plesk. You could add the line to that file, directly below the SSLCertificateFile
line, and then restart Apache, and it would work - HOWEVER, if you do that, the file will get overriden next time you change the settings for that domain in Plesk, and you'll lose your changes. At the top of the file, Plesk gives this warning:
#ATTENTION!
#
#DO NOT MODIFY THIS FILE BECAUSE IT WAS GENERATED AUTOMATICALLY,
#SO ALL YOUR CHANGES WILL BE LOST THE NEXT TIME THE FILE IS GENERATED.
#
#IF YOU REQUIRE TO APPLY CUSTOM MODIFICATIONS, PERFORM THEM IN THE FOLLOWING FILES:
#/var/www/vhosts/ssltest.bblhosted.com/conf/vhost.conf
#/var/www/vhosts/ssltest.bblhosted.com/conf/vhost_ssl.conf
So, I created /var/www/vhosts/ssltest.bblhosted.com/conf/vhost_ssl.conf
and added the single line to it:
SSLCertificateChainFile /usr/local/psa/var/certificates/cert-t8ReAO
You don't need to add anything else but that single line. From what I know, all other settings will still get taken from the default httpd.include file generated by Plesk.
Now, you have to tell Plesk to look for the vhost_ssl.conf file, because it won't by default - even though you've created it! Do this by logging in via SSH and executing this command:
/usr/local/psa/admin/bin/httpdmng --reconfigure-all
That will tell Plesk to look for vhost.conf (and vhost_ssl.conf) for all domains. You can also do it for just a single domain if need be.
Last, restart Apache, and the SSL works!
Note that if you add another subdomain, you need to go through the whole process again, including executing the terminal command to make Plesk look for vhost.conf and vhost_ssl.conf for your new domain or subdomain.
Возможно, ваша цепочка сертификатов не завершена. Возможно, вам потребуется добавить RapidSSL CA Bundle . к вашему сертификату.
В Apache у вас есть опция SSLCertificateChainFile
. Укажите путь, по которому вы сохранили RapidSSL CA Bundle .
Другой вариант - добавить сертификаты цепочки к вашим собственным, добавив их к вашему сертификату, как это
cat mycert.pem RapidSSL_CA_bundle.pem >> mychainedcert.pem
Это должно решить проблему.
Очевидно, вы купили сертификат на RapidSSL. Однако RapidSSL не является одним из центров сертификации, которым доверяют ваши браузеры. Это не проблема, потому что ваш браузер доверяет GeoTrust, а GeoTrust доверяет RapidSSL. Вам просто нужно показать браузеру сертификат, подтверждающий это. Вот почему вам необходимо включить файл цепочки.
Недавно я настроил именно этот сценарий. Мне нужно будет проверить дальше, НО:
При проверке данных вашего сертификата вы получите:
Nome DNS: * .bblhosted.com Nome DNS: bblhosted.com
У вас bblhosted.com как AltDNSName.
Я решил проблему, с которой вы столкнулись, имея один сертификат для корневого домена и один сертификат с подстановочными знаками для каждого другого поддомена.
Таким образом, маска шаблона сертификата будет соответствовать указанному URL-адресу всеми возможными способами, которыми браузер должен его проверять.
TL; DR: получить два новых сертификата, один с просто «bblhosted.com» как altDnsName / CN и один с "* .bblhosted.com".
РЕДАКТИРОВАТЬ: Вы можете проверить, является ли это проблемой, выполнив несколько бесплатных сертификатов от ребят с http://www.cacert.org . Я не стал беспокоиться о коммерческом сертификате, и у меня он есть в качестве основных сертификатов ssl. Единственная проблема заключается в том, что большинство ОС не поставляют свой корневой сертификат, поэтому вам придется установить его самостоятельно.
Сертификат может содержать специальное расширение доступа к информации о полномочиях ( RFC-3280 )с URL-адресом сертификата эмитента. Большинство браузеров могут использовать расширение AIA для загрузки отсутствующего промежуточного сертификата для завершения цепочки сертификатов. Но некоторые клиенты (мобильные браузеры, OpenSSL) не поддерживают это расширение, поэтому они сообщают о таком сертификате как о ненадежном.
Вы можете решить проблему неполной цепочки сертификатов вручную, объединив все сертификаты из сертификата в доверенный корневой сертификат (эксклюзивный, в указанном порядке), чтобы предотвратить такие проблемы. Обратите внимание: доверенного корневого сертификата там не должно быть, поскольку он уже включен в хранилище корневых сертификатов системы.
Вы должны иметь возможность получать промежуточные сертификаты от издателя и объединять их вместе. Кстати, я написал сценарий для автоматизации процедуры, он перебирает расширение AIA для вывода правильно связанных сертификатов. https://github.com/zakjan/cert-chain-resolver