Назад | Перейти на главную страницу

аутентификация apache с SSL-сертификатом и SSLUserName

Я просто пытаюсь установить аутентификацию 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

Как я могу использовать директиву apache SSLUserName для создания поддельного аутентификации только с SSL_CLIENT_S_DN_CN клиентского сертификата (MyUser)

Я получил версию apache 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