Могут использоваться команды apachectl или httpd
Проверить конфигурацию:
apache2ctl -t
Перегрузить конфигурацию:
apachectl -k graceful
Чтобы включить доступ к сайту по https, добавляем в настройках сайта доступ к сайту по порту 443:
<VirtualHost *:443>
и включаем SSL:
SSLEngine on SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
Подключаем модуль ssl и перезагружаем:
sudo a2enmod ssl sudo service apache2 restart
Для обработки cgi и pl в конфигурации сайта (Directory, Location) должно быть:
Options ExecCGI FollowSymLinks
# AddHandler cgi-script .cgi .pl
AllowOverride All
sudo a2enmod ssl sudo service apache2 restart
Устанавливаем:
sudo apt install libapache2-mod-auth-kerb
В домене создаём пользователя http и выполняем:
ktpass -princ HTTP/site.domain.com@DOMAIN.COM -mapuser http -pass passuserhttp -out C:\http.keytab
Перемещаем http.keytab в /etc/apache2/, меняем права:
sudo chown www-data /etc/apache/http.keytab sudo chmod 400 /etc/apache/http.keytab
Добавляем в корень дирректории сайта:
<Directory "/var/www/site/">
AuthType Kerberos
KrbVerifyKDC off
Krb5KeyTab /etc/apache/http.keytab
KrbServiceName HTTP/site.domain.com@DOMAIN.COM
Require valid-user
</Directory>
Вывод в /tmp/krb5.trace от www-data:
sudo --user www-data env KRB5_TRACE=/tmp/krb5.trace kinit -k -t /var/www/1c/www-1c.keytab HTTP/1c.domain.com
Вывод на экран от root:
sudo env KRB5_TRACE=/dev/stdout kinit -k -t /etc/apache/http.keytab HTTP/site.domain.com
Временно можно добавить отладку для обращений через apache:
echo export KRB5_TRACE=/tmp/krb5_apache.trace | sudo tee -a /etc/apache2/envvars touch /tmp/krb5_apache.trace sudo chown www-data /tmp/krb5_apache.trace systemctl apache2 restart
Устанавливаем php-ldap:
sudo apt install php-ldap
Пример конфигурации сайта apache, добавляем в VirtualHost:
Alias "/krb" "/var/www/krb/"
<Directory "/var/www/krb/">
AllowOverride All
Options None
AuthType Kerberos
AuthName "Kerberos Login"
KrbMethodNegotiate On
KrbMethodK5Passwd On
KrbAuthRealms DOMAIN.COM
Krb5KeyTab /etc/apache2/http.keytab
KrbServiceName HTTP
KrbSaveCredentials On
KrbLocalUserMapping On
Require valid-user
</Directory>
Добавляем index.php в /var/www/krb/:
<?php var_dump($_SERVER['PHP_AUTH_USER']); var_dump($_SERVER['KRB5CCNAME']); putenv("KRB5CCNAME={$_SERVER['KRB5CCNAME']}"); $ldapconn = ldap_connect("ldap://dc.domain.com:389") or die('error connect с $ldaphost') ; ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0); $result = ldap_sasl_bind($ldapconn,'','','GSSAPI','DOMAIN.COM') or die('Failed to GSSAPI bind sasl bind.<br />'); $result = ldap_search($ldapconn, 'DC=DOMAIN,DC=COM', '(objectClass=*)', array('mail')); $result_entries = ldap_get_entries($ldapconn, $result); var_dump($result_entries); ?>
При переходе по данному адресу (site.domain.com/krb) вывод должен быть примерно таким:
string(4) "user" string(30) "FILE:/tmp/krb5cc_apache_C2QEEw"
Необходимо подключить модуль ssl:
sudo a2enmod ssl
Необходимо в настройках виртуальных хостов /etc/apache2/sites-available/* изменить прослушивающие интерфейсы с:
<VirtualHost *:80>
на
<VirtualHost 0.0.0.0:80>