ovirt 4.4.X 解决证书过期问题

该解决方案适用于数据中心中多于一台主机的情况。

1.查看当前证书的有效时间范围。

a.查看管理台证书的有效时间范围

 [root@100engine41 pki]# openssl x509 -in /etc/pki/ovirt-engine/certs/engine.cer -noout -dates
 notBefore=Feb 14 04:41:03 2021 GMT
 notAfter=Jan 8 04:41:03 2022 GMT

b.查看主机证书的有效时间范围

 [root@100node40 ~]# openssl x509 -in /etc/pki/vdsm/certs/vdsmcert.pem -noout -dates
 notBefore=Feb 14 04:41:03 2021 GMT
 notAfter=Jan 8 04:41:03 2022 GMT

2.修改主机和管理台的系统时间到当前证书有效时间范围内,让管理台和主机的状态恢复正常。

 # 管理台
 [root@100engine41 pki]# date -s "2022-1-7"
 ​
 # 主机
 [root@100node40 ~]# date -s "2022-1-7"

3.重新生成管理台和主机的证书(例如11年)

a.修改证书的有效时间

 # /usr/share/ovirt-engine/bin/pki-enroll-request.sh
 NAME=""
 SUBJECT=""
 TIMEOUT="20"
 DAYS="3980" # 默认为398天,修改为3980天
 OVIRT_KU=""

b.重新生成根证书(默认根证书的有效期为10年,可以不执行该操作)

 [root@100engine41 ~]# openssl x509 -signkey /etc/pki/ovirt-engine/private/ca.pem -in /etc/pki/ovirt-engine/ca.pem -out /etc/pki/ovirt-engine/ca.pem.new -days 3650 -sha256
 Getting Private key
 ​
 [root@100engine41 ~]# ll /etc/pki/ovirt-engine/ca.pem.new 
 -rw-r--r--. 1 root root 1314 Feb 16 14:21 /etc/pki/ovirt-engine/ca.pem.new
 ​
 # 新生成的根证书替换旧的根证书
 [root@100engine41 ~]# mv /etc/pki/ovirt-engine/ca.pem.new /etc/pki/ovirt-engine/ca.pem

c.设置HA的维护模式为global模式

 [root@100node40 ~]# hosted-engine --set-maintenance --mode=global

d.执行以下脚本命令生成管理台证书

 names="engine apache websocket-proxy jboss"
 ​
 . /etc/ovirt-engine/engine.conf.d/10-setup-protocols.conf
 ​
 for name in $names; do
   subject="$(
    openssl \
      x509 \
      -in /etc/pki/ovirt-engine/certs/"${name}".cer \
      -noout \
      -subject \
    | sed \
      -e 's;subject=;/;' -e 's; ;;g' -e 's;,;/;g' \
  )"
  /usr/share/ovirt-engine/bin/pki-enroll-pkcs12.sh \
     --name="${name}" \
     --password=mypass \
     --subject="${subject}" \
     --san=DNS:"${ENGINE_FQDN}" \
     --keep-key
 done

 # 重启相关服务
 systemctl restart httpd
 systemctl restart ovirt-engine
 systemctl restart ovirt-websocket-proxy
 systemctl restart ovirt-imageio

e.执行完上面的脚本会重新更新以下证书

 [root@100engine41 ~]# openssl x509 -in /etc/pki/ovirt-engine/certs/engine.cer -noout -dates
 notBefore=Feb 14 04:41:03 2022 GMT
 notAfter=Jan 8 04:41:03 2033 GMT
 [root@100engine41 ~]# openssl x509 -in /etc/pki/ovirt-engine/certs/apache.cer -noout -dates
 notBefore=Feb 14 04:41:04 2022 GMT
 notAfter=Jan 8 04:41:04 2033 GMT
 [root@100engine41 ~]# openssl x509 -in /etc/pki/ovirt-engine/certs/websocket-proxy.cer -noout -dates
 notBefore=Feb 14 04:41:04 2022 GMT
 notAfter=Jan 8 04:41:04 2033 GMT
 [root@100engine41 ~]# openssl x509 -in /etc/pki/ovirt-engine/certs/jboss.cer -noout -dates
 notBefore=Feb 14 04:41:04 2022 GMT
 notAfter=Jan 8 04:41:04 2033 GMT

f.关闭HA的全局维护模式

 [root@100node40 ~]# hosted-engine --set-maintenance --mode=none

g.修改管理台的 engine 数据库,改变主机的证书的有效时间

 [root@100engine41 ~]# su postgres
 bash-4.4$ psql
 could not change directory to "/root": Permission denied
 psql (12.7)
 Type "help" for help.
 ​
 postgres=# \c engine
 You are now connected to database "engine" as user "postgres".
 ​
 engine=# select * from vdc_options where option_name='VdsCertificateValidityInDays';
  option_id |    option_name    | option_value | version | default_value 
 -----------+------------------------------+--------------+---------+---------------
    354 | VdsCertificateValidityInDays | 398    | general | 398
 (1 row)
 ​
 engine=# update vdc_options set option_value=3980 where option_name='VdsCertificateValidityInDays';
 UPDATE 1
 ​
 engine=# update vdc_options set default_value=3980 where option_name='VdsCertificateValidityInDays';
 UPDATE 1
 ​
 engine=# select * from vdc_options where option_name='VdsCertificateValidityInDays';
  option_id |    option_name    | option_value | version | default_value 
 -----------+------------------------------+--------------+---------+---------------
    354 | VdsCertificateValidityInDays | 3980    | general | 3980
 (1 row)
 ​
 engine=# exit
 bash-4.4$ exit
 exit
 ​
 #重启管理台服务
 [root@100engine41 ~]# systemctl restart ovirt-engine

4.所有主机执行“注册证书”操作

操作步骤:

  • 首先迁移主机上的虚拟机到其它主机上。
  • 然后主机执行“维护”操作。
  • 然后点击“注册证书”按钮。
  • 注册证书操作完成后,主机会变为维护状态,点击“激活”按钮将主机激活。
  • 在主机终端中执行以下命令:
 cd /etc/pki/vdsm
 cp -r libvirt-spice libvirt-vnc
 cd /etc/pki/vdsm/libvirt-vnc
 chown vdsm:kvm server-key.pem

5.将主机和管理台的系统时间调整到当前时间

 # 加入当前时间为“2022-2-16 14:21:16”
 ​
 # 管理台
 [root@100engine41 pki]# date -s “2022-2-16 14:21:16”
 ​
 # 主机
 [root@100node40 ~]# date -s “2022-2-16 14:21:16”
7 条回复 A 作者 M 管理员 E
  1. ??新版本中的重要问题,使用一年后就会面临这个问题。

  2. a.修改证书的有效时间

    # /usr/share/ovirt-engine/bin/pki-enroll-request.sh
    NAME=””
    SUBJECT=””
    TIMEOUT=”20″
    DAYS=”3980″ # 默认为398天,修改为3980天
    OVIRT_KU=””

    这段每看懂如何操作,能否详细说明一下,谢谢

    • 这里作者没有写清楚,应该是需要修改“pki-enroll-pkcs12.sh”这个文件中的几个字段中天数相关字段。在后面d步骤中的脚本会调用这个脚本,自动生产新的ca证书文件。

  3. 更正一下,是没看懂

  4. 楼主有all in one环境证书过期解决办法吗?

  5. 4.4.10 d 步脚本怎么执行啊 弄成.sh 执行吗,试一下 测试不了,报错
    [root@engine254 ~]# sh vt.sh
    vt.sh: line 2:  .: command not found
    vt.sh: line 3: syntax error near unexpected token `do’
    vt.sh: line 3: ` for name in $names; do’

欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论