CentOS 장치에서 openssl 서버를 실행하고 있습니다. 만료된 인증서를 사용하고 있으며 /var/log/messages에서 "인증 기관 오류" 메시지를 확인하고 싶지만 시스템 로그에 인증 메시지가 기록되지 않습니다. 이 문제를 어떻게 해결할 수 있나요?
예상 메시지:
Certificate error: authority and subject key identifier mismatch
단계: 서버에서:
openssl s_server -debug -accept 4443 -cert /tmp/expired.crt -key /tmp/expired.key -tls1 -no_dhe -WWW -cipher DES-CBC3-SHA 1>/tmp/server-normal-tls1-DES-CBC3-SHA-STDOUT 2>/tmp/server-normal-tls1-DES-CBC3-SHA-STDERR &
클라이언트 측에서:
openssl s_client -connect 5.0.0.1:4443 -tls1 -CAfile /tmp/all.pem -cipher DES-CBC3-SHA 1>/tmp/client-normal-tls1-DES-CBC3-SHA-STDOUT 2>/tmp/client-normal-tls1-DES-CBC3-SHA-STDERR; echo
서버에서 /var/log/messages를 확인하세요.
[root@<hostname> ~]# cat /var/log/messages
<6>1 2020-07-01T00:04:46.230901+05:30 <hostname> kernel - - e1000: eth0 NIC Link is Up 1000
Mbps Full Duplex, Flow Control: None
<6>1 2020-07-01T00:04:46.238043+05:30 <hostname> kernel - - ADDRCONF(NETDEV_UP): eth0: link is not ready
<6>1 2020-07-01T00:04:46.238084+05:30 <hostname> kernel - - 8021q: adding VLAN 0 to HW filter on device eth0
<6>1 2020-07-01T00:04:46.263186+05:30 <hostname> kernel - - ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
<189>1 2020-07-01T00:04:46.354565+05:30 <hostname> NET 3206 - - /etc/sysconfig/network-scripts/ifup-post : updated /etc/resolv.conf
<6>1 2020-07-01T00:04:46.421362+05:30 <hostname> kernel - - e1000: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
<6>1 2020-07-01T00:04:46.428795+05:30 <hostname> kernel - - ADDRCONF(NETDEV_UP): eth1: link is not ready
<6>1 2020-07-01T00:04:46.428838+05:30 <hostname> kernel - - 8021q: adding VLAN 0 to HW filter on device eth1
<6>1 2020-07-01T00:04:46.444970+05:30 <hostname> kernel - - ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
<6>1 2020-07-01T00:04:46.581818+05:30 <hostname> kernel - - e1000: eth2 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
<6>1 2020-07-01T00:04:46.589378+05:30 <hostname> kernel - - ADDRCONF(NETDEV_UP): eth2: link is not ready
<6>1 2020-07-01T00:04:46.589391+05:30 <hostname> kernel - - 8021q: adding VLAN 0 to HW filter on device eth2
<6>1 2020-07-01T00:04:46.605267+05:30 <hostname> kernel - - ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready
<189>1 2020-07-01T00:04:47.419669+05:30 <hostname> NET 3368 - - /etc/sysconfig/network-scripts/ifdown-post : updated /etc/resolv.conf
<6>1 2020-07-01T00:04:47.829926+05:30 <hostname> kernel - - e1000: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
<6>1 2020-07-01T00:04:47.842681+05:30 <hostname> kernel - - ADDRCONF(NETDEV_UP): eth1: link is not ready
<6>1 2020-07-01T00:04:47.842802+05:30 <hostname> kernel - - 8021q: adding VLAN 0 to HW filter on device eth1
<6>1 2020-07-01T00:04:47.871609+05:30 <hostname> kernel - - ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
<30>1 2020-07-01T00:04:48.209339+05:30 <hostname> dnsmasq 1911 - - reading /etc/resolv.conf
<30>1 2020-07-01T00:04:48.209377+05:30 <hostname> dnsmasq 1911 - - using nameserver 10.204.208.221#53
<30>1 2020-07-01T00:04:48.209389+05:30 <hostname> dnsmasq 1911 - - using nameserver 10.204.208.219#53
<30>1 2020-07-01T00:04:48.209398+05:30 <hostname> dnsmasq 1911 - - using nameserver 10.216.116.220#53
<30>1 2020-07-01T00:04:48.209416+05:30 <hostname> dnsmasq 1911 - - using local addresses only for unqualified names
<6>1 2020-07-01T00:04:48.821696+05:30 <hostname> kernel - - e1000: eth2 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
<6>1 2020-07-01T00:04:48.829409+05:30 <hostname> kernel - - ADDRCONF(NETDEV_UP): eth2: link is not ready
<6>1 2020-07-01T00:04:48.829418+05:30 <hostname> kernel - - 8021q: adding VLAN 0 to HW filter on device eth2
<6>1 2020-07-01T00:04:48.845368+05:30 <hostname> kernel - - ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready
<13>1 2020-07-01T00:12:41.993789+05:30 <hostname> root 3800 - - hello
<6>1 2020-07-01T00:28:41.528583+05:30 <hostname> kernel - - Kernel logging (proc) stopped.
<46>1 2020-07-01T00:28:41.539523+05:30 <hostname> rsyslogd - - [origin software="rsyslogd" swVersion="5.8.10" x-pid="1229" x-info="http://www.rsyslog.com"] exiting on signal 15.
/etc/rsyslog.conf 구성:
#### RULES ####
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;user;auth;authpriv;cron.none;syslog;daemon /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg *
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
답변1
그 이유는 간단합니다. 어떤 소프트웨어를 사용하든 시스템 로거에 메시지를 보내지 않기 때문입니다. OpenSSL 자체는 데몬으로 실행되지 않으며 기본적으로(또는 전혀) 로그인 시스템 로거로 구성되지 않습니다.
rsyslog(또는 다른 시스템 로거)가 메시지를 수신하고 결국 로그 파일이나 다른 곳에 쓸 수 있도록 프로세스는 의도적으로 시스템 로거에 메시지를 보내야 합니다.
답변2
SSL 서버( openssl s_server
)가 자체 SSL 서버 인증서 확인 실패 이유를 기록하지 않는 이유를 문의하셨습니다.
나는 이것이 가능하다고 믿지 않습니다. 서버 인증서는 (일반적으로) 서버에서 확인되지 않습니다.
서버 인증서는 클라이언트에 의해 확인됩니다. 특히, "이후 날짜 아님"이 시스템 시계를 기준으로 과거이기 때문에 만료된 인증서는 실패합니다.고객. 서버는 클라이언트가 생각하는 시간을 알지 못하기 때문에(추측만 가능) 클라이언트가 인증서를 수락할지 여부를 실제로 알 수 없습니다.
AFAIK 인증서가 클라이언트 측에서 유효성 검사에 실패하면 클라이언트는 유효성 검사가 실패한 이유를 서버에 알리지 않습니다. 서버를 전혀 신뢰하지 않기 때문에 연결을 닫을 뿐입니다.
페드로가 지적했듯이 openssl s_server
시스템 로그에 기록할 필요가 없습니다. 클라이언트 연결이 끊어진 이유를 확인할 수 있더라도 그렇게 할 수 있는 선택권이 없습니다(AFAIK). 출력을 캡처하고 syslog 클라이언트를 통해 게시해야 합니다.기록계.