я просто пытаюсь поместить аутентификацию SSL для сервера SVN по https. Я хотел бы это, клиентский сертификат позволяет уполномоченному лицу проверять их репозитории.
<VirtualHost 37.187.96.147:443>
ServerName toto.com:443
DocumentRoot /var/www/html/
SSLEngine on
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM
SSLStrictSNIVHostCheck on
SSLCertificateFile /etc/ssl/certificate-authority/certs/svn-webserver.crt
SSLCertificateKeyFile /etc/ssl/certificate-authority/private/svn-webserver.key
ErrorLog /var/log/httpd/svn-error_log
CustomLog logs/svn-access "%t %u %{SVN-ACTION}e" env=SVN-ACTION
SSLCACertificateFile /etc/ssl/certificate-authority/certs/ca.crt
SSLVerifyDepth 5
SSLVerifyClient require
SSLVerifyDepth 1
LogLevel debug
<Location /svn/>
DAV svn
SSLOptions +FakeBasicAuth +StrictRequire
SSLRequireSSL
AuthName "Depot SVN namek"
AuthType Basic
AuthBasicProvider file
AuthUserFile /var/svn/.fakehttpsauth
Require valid-user
SVNParentPath /var/svn/
SVNListParentPath on
AuthzSVNAccessFile /var/svn/authz
</Location>
</VirtualHost>
но это не действительно полезная причина полученный этот тип имени пользователя для моего svn
/C=xx/ST=xx/L=xx/CN=MyUser
Как я мог использовать апачскую директиву SSLUserName для создания fakeauth только с SSL_CLIENT_S_DN_CN клиентского сертификата (MyUser)
я получил 2.2.15 версии апача, таким образом, я не могу использовать директиву AuthBasicFake:/
если кто-то мог бы помочь мне, который мог бы быть великим ;).
спасибо все
В .fakehttpsauth вам нужно поместить такие записи, как:
/C=US/ST=CA/O=Doe Inc/CN=John Doe/emailAddress=john@doe.com:xxj31ZMTZzkVA
Вот сценарий для создания таких записей из ваших сертификатов:
#!/bin/bash
# export the certificates in fake auth format
# see http://serverfault.com/questions/533639/apache-authentication-with-ssl-certificate-and-sslusername
# WF 2016-01-06
fakepass=`openssl passwd -crypt -salt xx password`
for c in *.crt
do
openssl x509 -in $c -text | grep Subject: | gawk -v fakepass=$fakepass '
BEGIN { FS="," }
{
gsub("Subject: ","",$0)
for (i=1;i<=NF;i++) {
f=trim($i)
printf("/%s",f);
}
printf(":%s\n",fakepass);
}
# see https://gist.github.com/andrewrcollins/1592991
function ltrim(s) { sub(/^[ \t\r\n]+/, "", s); return s }
function rtrim(s) { sub(/[ \t\r\n]+$/, "", s); return s }
function trim(s) { return rtrim(ltrim(s)); }
'
done