티스토리 뷰

 

이전 포스트에서 정상적으로 업그레이드된 줄 알았으나 Git 관리자 페이지의 특정 기능들을 사용하려면 500 에러가 발생했다.

 

 

>> sudo docker logs gitlab -f

 

로그를 확인해보면 아래와 같은 OpenSSL 에러가 발생된걸 확인 할 수 있다.

OpenSSL::Cipher::CipherError ():

lib/gitlab/crypto_helper.rb:27:in `aes256_gcm_decrypt'
app/models/concerns/token_authenticatable_strategies/encrypted.rb:55:in `get_token'
app/models/concerns/token_authenticatable_strategies/base.rb:27:in `ensure_token'
app/models/concerns/token_authenticatable_strategies/encrypted.rb:42:in `ensure_token'
app/models/concerns/token_authenticatable.rb:38:in `block in add_authentication_token_field'
app/services/application_settings/update_service.rb:18:in `execute'
app/controllers/admin/application_settings_controller.rb:40:in `update'
lib/gitlab/i18n.rb:55:in `with_locale'
lib/gitlab/i18n.rb:61:in `with_user_locale'
app/controllers/application_controller.rb:420:in `set_locale'
lib/gitlab/middleware/multipart.rb:103:in `call'
lib/gitlab/request_profiler/middleware.rb:16:in `call'
...
...

 

찾아보니 마이그레이션, 혹은 백업 복구시 기존 SSL 관련된것들이 처리가 제대로 안된듯한 이슈로 보인다.

정확한것은 Gitlab 컨테이너의 상태 체크를 해보는것이 필요하다.

 

우선 Docker Container로 접속한다.

 

>> docker exec -it <gitlab-container-id> /bin/bash

 

아래의 명령어를 사용하여 secrets 인증 관련된 상태를 체크 한다.


>> gitlab-rake gitlab:doctor:secrets VERBOSE=1

 

 

벌써부터 보이는 빨간색 에러 항목들.

순차적으로 처리해보며 원하는 기능이 동작하는지 확인해봤다.

 

otp_secret Error

https://gitlab.com/gitlab-org/gitlab-foss/-/issues/1960

 

Login for 2fa users fails after a restore (#1960) · Issues · GitLab.org / GitLab FOSS · GitLab

Hi, I have a production CE instance running 7.11.4. Some users have 2FA enabled. When I take a backup of the system it completes without errors,...

gitlab.com

위의 해결방법을 참고하여 수정했다.

 

우선 gitlab-rails 명령어를 사용하여 모든 사용자들의 OTP 인증 기능을 OFF 했다. (어차피 내부망에서 사용하지 않는 기능)

 

>> gitlab-rails runner User.update_all(otp_required_for_login: false, encrypted_otp_secret: nil, encrypted_otp_secret_iv: nil, encrypted_otp_secret_salt: nil, otp_backup_codes: nil)

 

정상 수행 되면 아래의 명령어로 gitlab 재설정을 진행한다.

 

>> gitlab-ctl reconfigure

 

ApplicationSetting[1] : ci_jwt_signing_key, error_tracking_access_token

위의 에러는 Gitlab이 사용하는 PostgreSQL의 테이블들에 기록된 Token 값들을 삭제해주면 된다.

 

아래의 명령어를 사용하여 PostgreSQL 콘솔에 접속한다.

 

>> gitlab-psql

 

이제 특정 테이블의 runners_token 컬럼을 null 처리 해주는 작업을 진행한다.

 

Update projects Set runners_token = null, runners_token_encrypted = null;

Update namespaces Set runners_token = null, runners_token_encrypted = null;
Update application_settings Set runners_registration_token_encrypted = null;

Update ci_runners Set token = null, token_encrypted = null;

 

중간에 오타로 실패한 쿼리는 넘어가주세요 ㅎㅎ,,

 

 

필자는 이 단계 까지 진행한뒤 관리자 페이지에서 문제가 되었던 WebHook 기능을 설정하려고 하니 정상 동작하였다.