是否可以在不访问 SSL 密钥的情况下重新启动服务器?

是否可以在不访问 SSL 密钥的情况下重新启动服务器?

技术部门为我提供了一台服务器(具有 root 访问权限),用于在某个子域上运行 Web 应用程序。但该应用程序需要身份验证。因此,我请求了该域的 SSL 密钥。技术小组不愿意给我密钥——这是可以理解的。

我需要不时重启服务器。是否可以配置权限,让非 root 用户能够重启服务器,但无法访问其 SSL 密钥?

服务器可能是 apache 或 nginx。如果我在没有 root 权限的情况下运行其中任何一个,我会得到以下结果:

  • 阿帕奇:

    AH00526: Syntax error on line 35 of /etc/apache2/sites-enabled/canvas-misis-ru.conf:
    SSLCertificateKeyFile: file '/etc/ssl/private/ssl-cert-snakeoil.key' does not exist or is empty
    
  • nginx的:

    nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
    2014/09/21 17:08:55 [warn] 16805#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:2
    2014/09/21 17:08:55 [emerg] 16805#0: SSL_CTX_use_PrivateKey_file("/etc/ssl/private/ssl-cert-snakeoil.key") failed (SSL: error:0200100D:system library:fopen:Permission denied:fopen('/etc/ssl/private/ssl-cert-snakeoil.key','r') error:20074002:BIO routines:FILE_CTRL:system lib error:140B0002:SSL routines:SSL_CTX_use_PrivateKey_file:system lib)
    

答案1

可以使用 中的规则向用户授予单个命令的 root 权限/etc/sudoers

  • sudo visudo
  • 添加新规则

    someuser ALL=(ALL) NOPASSWD: /usr/sbin/service apache2 restart
    

如您所见,也可以使用参数。

用户someuser可以执行以下操作:

sudo service apache2 restart

相关内容