- 1. Windows 10
- 2 Windows Server 2021 R2, 2021 и 2021
- Выпуск самоподписанного сертификата
- Как обновить настройки Nginx
- Проверка публикации
- Aws s3 with the gitlab registry error when pushing large images
- Configure container registry notifications
- Configure storage for the container registry
- Container registry garbage collection
- Disable container registry for new projects site-wide
- Disable container registry site-wide
- Docker login attempt fails with: ‘token signed by untrusted key’
- Encrypted s3 buckets
- How do i use let’s encrypt with gitlab?
- Image push errors
- Mitmproxy
- Omnibus installations
- Performing garbage collection without downtime
- Removing untagged manifests and unreferenced layers
- Supporting older docker clients
- Tls requirement for gitlab pages
- Troubleshooting
- Use object storage
- Using self-signed certificates with container registry
- Базовые принципы:
- Добавление ssh ключа
- Использование сертификата let’s encrypt для remote desktop services
- Как установить ssl-сертификат на nginx
- Настройка nginx для поддержки ssl
- Настройка ssl
- Подготовка к установке gitlab
- Порт 22
- Преамбула
- Системные требования
- Стандартный процес обновления gitlab-ce
- Установить ssl /tls сертификат в windows iis 10 –
- Установка ssl сертификата в microsoft iis 10
1. Windows 10
Включение компонентов веб-сервера IIS в операционной системе Windows 10 выполняется достаточно просто. Для начала нужно открыть раздел “Программы и компоненты” (“Programs and Features”) в панели управления (Control panel). Сделать можно это несколькими способами:
Нажать сочетание клавиш Win R и в открывшемся окне ввести “appwiz.cpl” и нажать ОК.
Открыть панель управления (Control panel) и выбрать пункт меню Программы – Программы и компоненты (Programs – Programs and features).
В окне “Программы и компоненты” (“Programs and Features”) нажмите на кнопку “Включение и отключение компонентов Windows” (“Turn Windows features on or off”).
Когда откроется окно “Компоненты Windows” (“Windows features”) в нем необходимо будет проставить флажки для следующих элементов:
Службы IIS
Службы интернета
Компоненты разработки приложений
Расширение ISAPI
Фильтры ISAPI
Средства управления веб-сайтом
После этого нажимайте на кнопку “OK” и дождитесь завершения выполнения операции. После того как включение компонент будет выполнено, можно переходить к пункту “2. Публикация информационной базы”.
2 Windows Server 2021 R2, 2021 и 2021
Настройка компонент для Windows Server 2021 R2, Windows Server 2021 и Windows Server 2021 одинаковая и все настройки производятся в диспетчере серверов (Server Manager).
Откройте диспетчер серверов (Server Manager) и нажмите Управление – Добавить роли и компоненты (Manage – Add Roles and Features).
В ответ на нажатие откроется окно мастера добавления ролей и компонентов (Add Roles and Features).
В этом окне нажмите два раза “Далее” (“Next”) пока мастер не переключится на страницу ролей сервера (Server Roles).
Во вкладке роли сервера (Server Roles) установите флажок “Web Server IIS”. Так как эта роль зависит от другой роли ([Tools] IIS Management Console), то будет предложено установить ее дополнительно. Это можно сделать с помощью нажатия кнопки “Добавить компоненты” (Add Features) в открывшемся окне.
После чего нажимаем кнопку “Далее” (“Next”) пока мастер не дойдет до вкладки “Роль веб-сервера IIS” (“Web Server Role IIS”). На этой вкладке нажимайте кнопку “Далее” (“Next”) и попадете на вкладку “Службу ролей” (“Role Services”). Во вкладке нужно найти пункт “Application Development” и выбрать в нем с помощью флажков пункты “ISAPI Extensions” и “ISAPI Filters”. Как только закончите с установкой флажков нажимайте “Далее” (“Next”) и “Установить” (“Install”).
На этом установка веб-сервера завершена. Можно переходить к настройкам сертификатов.
Выпуск самоподписанного сертификата
Выпуск самоподписанного сертификата для веб-сервера IIS максимально простой.
Для реальных систем не рекомендуем использовать самоподписанный сертификат.
Для начала процедуры выпуска откройте окно Диспетчера служб IIS (Internet Information Services (IIS) Manager) и выделите сервер в списке Подключений (Connections). После этого нажмите на ссылку “Сертификаты сервера” (“Server Certificates”).
Откроется окно доступных сертификатов сервера (Server Certificates) в котором нужно нажать “Создать самозаверенный сертификат…” (“Create Self-Signed Certificate…”).
В окне мастера создания самоподписанного сертификата остается указать только произвольное название сертификата. В большинстве случаев, во избежание путаницы лучше явно указывать в качестве значения “Полное имя сертификата” (“Specify a friendly name for the certificate”) адрес сервера, на котором расположен сервер IIS. Как только имя сертификата будет задано нажимайте на кнопку OK и переходите к пункту привязки сертификата.
Как обновить настройки Nginx
После корректировки настроек веб-сервера и брандмауэра нужно перезапустить Nginx, чтобы все изменения вступили в силу. Проверьте синтаксис на наличие ошибок с помощью:
sudo nginx -tЕсли все правильно, на экране вы увидите:
nginx: [warn] "ssl_stapling" ignored, issuer certificate not found
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Предупреждение появляется в первой строке, поскольку мы используем самоподписанный сертификат. Не обращайте внимания, соединение все равно будет корректно шифроваться. В случае обнаружения ошибок их необходимо исправить. После этого потребуется перезапуск веб-сервера Nginx с помощью:
sudo systemctl restart nginxПроверка публикации
Для публикации информационной базы нужно открыть конфигуратор конкретной базы от имени администратора и перейти в пункт меню “Администрирование”. После этого выбрать “Публикация информационной базы”.
В окне публикации указать имя публикации и по желанию определить каталог, где будут находиться настройки публикации. Его также можно оставить по умолчанию.
После этого требуется нажать кнопку “Опубликовать” и дождаться окончания операции.
Для проверки корректной работы нужно открыть страницу в браузере и перейти по ссылке, которая состоит из двух частей:
- Имя вашего сервера (например, server1)
- Имя публикации базы (которое было указано в окне настройки публикации)
Для таких параметров ссылка будет иметь вид:
Aws s3 with the gitlab registry error when pushing large images
When using AWS S3 with the GitLab registry, an error may occur when pushing
large images. Look in the Registry log for the following error:
To resolve the error specify a chunksize value in the Registry configuration.
Start with a value between 25000000 (25MB) and 50000000 (50MB).
For Omnibus installations
Edit
/etc/gitlab/gitlab.rb:Save the file and reconfigure GitLab for the changes to take effect.
For installations from source
Edit
config/gitlab.yml:Save the file and restart GitLab for the changes to take effect.
Configure container registry notifications
You can configure the Container Registry to send webhook notifications in
response to events happening within the registry.
Read more about the Container Registry notifications configuration options in the
Docker Registry notifications documentation.
You can configure multiple endpoints for the Container Registry.
Omnibus GitLab installations
To configure a notification endpoint in Omnibus:
Edit
/etc/gitlab/gitlab.rb:Save the file and reconfigure GitLab for the changes to take effect.
Installations from source
Configuring the notification endpoint is done in your registry configuration YML file created
when you deployed your Docker registry.
Example:
Configure storage for the container registry
For storage backends that support it, you can use object versioning to preserve, retrieve, and
restore the non-current versions of every object stored in your buckets. However, this may result in
higher storage usage and costs. Due to how the registry operates, image uploads are first stored in
a temporary path and then transferred to a final location. For object storage backends, including S3
and GCS, this transfer is achieved with a copy followed by a delete. With object versioning enabled,
these deleted temporary upload artifacts are kept as non-current versions, therefore increasing the
storage bucket size. To ensure that non-current versions are deleted after a given amount of time,
you should configure an object lifecycle policy with your storage provider.
You can configure the Container Registry to use various storage backends by
configuring a storage driver. By default the GitLab Container Registry
is configured to use the file system driver
configuration.
The different supported drivers are:
Although most S3 compatible services (like MinIO) should work with the Container Registry, we only guarantee support for AWS S3. Because we cannot assert the correctness of third-party S3 implementations, we can debug issues, but we cannot patch the registry unless an issue is reproducible against an AWS S3 bucket.
Read more about the individual driver’s configuration options in the
Docker Registry docs.
Container registry garbage collection
Container Registry can use considerable amounts of disk space. To clear up
some unused layers, the registry includes a garbage collect command.
GitLab offers a set of APIs to manipulate the Container Registry and aid the process
of removing unused tags. Currently, this is exposed using the API, but in the future,
these controls should migrate to the GitLab interface.
Project maintainers can
delete Container Registry tags in bulk
periodically based on their own criteria, however, this alone does not recycle data,
it only unlinks tags from manifests and image blobs. To recycle the Container
Registry data in the whole GitLab instance, you can use the built-in command
provided by gitlab-ctl.
Prerequisites:
Disable container registry for new projects site-wide
If the Container Registry is enabled, then it should be available on all new
projects. To disable this function and let the owners of a project to enable
the Container Registry by themselves, follow the steps below.
Omnibus GitLab installations
Edit
/etc/gitlab/gitlab.rband add the following line:Save the file and reconfigure GitLab for the changes to take effect.
Installations from source
Open
/home/git/gitlab/config/gitlab.yml, find thedefault_projects_features
entry and configure it so thatcontainer_registryis set tofalse:Save the file and restart GitLab for the changes to take effect.
Disable container registry site-wide
When you disable the Registry by following these steps, you do not
remove any existing Docker images. This is handled by the
Registry application itself.
Omnibus GitLab
Open
/etc/gitlab/gitlab.rband setregistry['enable']tofalse:Save the file and reconfigure GitLab for the changes to take effect.
Installations from source
Open
/home/git/gitlab/config/gitlab.yml, find theregistryentry and
setenabledtofalse:Save the file and restart GitLab for the changes to take effect.
Docker login attempt fails with: ‘token signed by untrusted key’
Registry relies on GitLab to validate credentials
If the registry fails to authenticate valid login attempts, you get the following error message:
And more specifically, this appears in the /var/log/gitlab/registry/current log file:
GitLab uses the contents of the certificate key pair’s two sides to encrypt the authentication token
for the Registry. This message means that those contents do not align.
Check which files are in use:
The output of these openssl commands should match, proving that the cert-key pair is a match:
If the two pieces of the certificate do not align, remove the files and run gitlab-ctl reconfigure
to regenerate the pair. If you have overridden the automatically generated self-signed pair with
your own certificates and have made sure that their contents align, you can delete the ‘registry’
section in your /etc/gitlab/gitlab-secrets.json and run gitlab-ctl reconfigure.
Encrypted s3 buckets
You can use server-side encryption with AWS KMS for S3 buckets that have
SSE-S3 or SSE-KMS encryption enabled by default.
Customer master keys (CMKs) and SSE-C encryption aren’t supported since this requires sending the
encryption keys in every request.
For SSE-S3, you must enable the encrypt option in the registry settings. How you do this depends
on how you installed GitLab. Follow the instructions here that match your installation method.
For Omnibus GitLab installations:
Edit
/etc/gitlab/gitlab.rb:Save the file and reconfigure GitLab
for the changes to take effect.
For installations from source:
Edit your registry configuration YML file:
Save the file and restart GitLab
for the changes to take effect.
How do i use let’s encrypt with gitlab?
If your Gitlab host is not externally accessible by the Let´s Encrypt servers, the whole process is much harder! You´ll then leave the nice automatic way of letting Gitlab Omnibus do the heavy lifting for you. You definitely need to fetch the Let´s Encrypt certificates on your own now! There are some ways to fetch Let´s Encrypt certificates without the need for an externally accessible server.
The one I choose and would recommend is to use the alternative Let´s Encrypt client dehydrated together with the dns-lexicon to fully automate the process of obtaining the certificates together with the Let´s Encrypt dns-challenge, which was introduced somewhere in 2021. This is the only way, where you don´t need an externally accessible server – but you again need to “own” a certain domain like gitlab.yoursite.comAND you need API access to the DNS provider, which hosts your domain (here´s a list of supported DNS providers in that case).
As the whole process is quite complex I created a fully comprehensible Ansible playbook prepare-gitlab.yml where every step of the Gitlab installation with Omnibus is handled for you (full GitHub sources are available here: https://github.com/jonashackt/gitlab-ci-stack).
If you only want to create the Let´s Encrypt certificates, have a look into obtain-letsencrypt-certs-dehydrated-lexicon.yml – even if you don´t want to use Ansible, you can also manually reproduce every step on the console or use another automation tool like Chef or Saltstack (although I can´t recommend that personally). Another way would be to have a look onto this great blogpost from the lexicon guys: https://blog.thesparktree.com/generating-intranet-and-private-network-ssl, from those described steps I basically developed the playbook from.
Either way you choose, don´t forget to copy the manually (or automatically) fetched Let´s Encrypt certificates from
/srv/dehydrated/certs/{{ gitlab_domain }}/fullchain.pem
to
/etc/gitlab/ssl/{{ gitlab_domain }}.crt
and
/srv/dehydrated/certs/{{ gitlab_domain }}/privkey.pem
to
/etc/gitlab/ssl/{{ gitlab_domain }}.key
Gitlab will pick them up from there automatically for you, as the docs state in the way to manually configure HTTPS
Image push errors
When getting errors or “retrying” loops in an attempt to push an image but docker login works fine,
there is likely an issue with the headers forwarded to the registry by NGINX. The default recommended
NGINX configurations should handle this, but it might occur in custom setups where the SSL is
offloaded to a third party reverse proxy.
This problem was discussed in a Docker project issue
and a simple solution would be to enable relative URLs in the Registry.
For Omnibus installations
Edit
/etc/gitlab/gitlab.rb:Save the file and reconfigure GitLab for the changes to take effect.
For installations from source
Edit the YML configuration file you created when you deployed the registry. Add the following snippet:
Save the file and restart GitLab for the changes to take effect.
Mitmproxy
mitmproxy allows you to place a proxy between your
client and server to inspect all traffic. One wrinkle is that your system
needs to trust the mitmproxy SSL certificates for this to work.
The following installation instructions assume you are running Ubuntu:
- Install mitmproxy.
- Run
mitmproxy --port 9000to generate its certificates.
Enter CTRL–C to quit. Install the certificate from
~/.mitmproxyto your system:
If successful, the output should indicate that a certificate was added:
To verify that the certificates are properly installed, run:
This command runs mitmproxy on port 9000. In another window, run:
If everything is set up correctly, information is displayed on the mitmproxy window and
no errors are generated by the curl commands.
Omnibus installations
For Omnibus installations:
Temporarily replace the registry binary that ships with GitLab 13.9 for one prior to
v3.0.0-gitlab. To do so, pull a previous version of the Docker image for the GitLab Container
Registry, such asv2.13.1-gitlab. You can then grab theregistrybinary from within this
image, located at/bin/registry:Replace the binary embedded in the Omnibus install, located at
/opt/gitlab/embedded/bin/registry, withregistry-2.13.1-gitlab. Make sure to start by backing
up the original binary embedded in Omnibus, and restore it after performing the
image upgrade) steps. You should stop
the registry service before replacing its binary and start it right after. No registry
configuration changes are required.
Performing garbage collection without downtime
You can perform garbage collection without stopping the Container Registry by putting
it in read-only mode and by not using the built-in command. On large instances
this could require Container Registry to be in read-only mode for a while.
During this time,
you are able to pull from the Container Registry, but you are not able to
push.
By default, the registry storage path
is /var/opt/gitlab/gitlab-rails/shared/registry.
To enable the read-only mode:
In
/etc/gitlab/gitlab.rb, specify the read-only mode:Save and reconfigure GitLab:
This command sets the Container Registry into the read-only mode.
Next, trigger one of the garbage collect commands:
This command starts the garbage collection, which might take some time to complete.
Once done, in
/etc/gitlab/gitlab.rbchange it back to read-write mode:Save and reconfigure GitLab:
Removing untagged manifests and unreferenced layers
Introduced in Omnibus GitLab 11.10.
The GitLab Container Registry follows the same default workflow as Docker Distribution:
retain untagged manifests and all layers, even ones that are not referenced directly. All content
can be accessed by using context addressable identifiers.
However, in most workflows, you don’t care about untagged manifests and old layers if they are not directly
referenced by a tagged manifest. The registry-garbage-collect command supports the
-m switch to allow you to remove all unreferenced manifests and layers that are
not directly accessible via tag:
Since this is a way more destructive operation, this behavior is disabled by default.
You are likely expecting this way of operation, but before doing that, ensure
that you have backed up all registry data.
When the command is used without the -m flag, the Container Registry only removes layers that are not referenced by any manifest, tagged or not.
Supporting older docker clients
As of GitLab 11.9, we began shipping version 2.7.1 of the Docker container registry, which disables the schema1 manifest by default. If you are still using older Docker clients (1.9 or older), you may experience an error pushing images. See omnibus-4145 for more details.
You can add a configuration option for backwards compatibility.
For Omnibus installations
Edit
/etc/gitlab/gitlab.rb:Save the file and reconfigure GitLab for the changes to take effect.
For installations from source
Edit the YML configuration file you created when you deployed the registry. Add the following snippet:
Restart the registry for the changes to take affect.
Tls requirement for gitlab pages
For GitLab Pages with TLS support,
a wildcard certificate applicable for *.<pages domain> (default value of
<pages domain> is pages.<base domain>) is required.
Because a wild card certificate is required, it can not be automatically created
by cert-manager and Let’s Encrypt. cert-manager is therefore by default disabled
for GitLab Pages (via gitlab-pages.ingress.configureCertmanager), so you will
have to provide your own k8s Secret containing a wild card certificate.
If you
have an external cert-manager configured using global.ingress.annotations, you
probably also want to override such annotations in
gitlab-pages.ingress.annotations.
By default, the name of this secret is <RELEASE>-pages-tls. A different name
can be specified using the gitlab.gitlab-pages.ingress.tls.secretName setting:
Troubleshooting
Before diving in to the following sections, here’s some basic troubleshooting:
Check to make sure that the system clock on your Docker client and GitLab server have
been synchronized (for example, via NTP).If you are using an S3-backed Registry, double check that the IAM
permissions and the S3 credentials (including region) are correct. See the
sample IAM policy
for more details.Check the Registry logs (for example
/var/log/gitlab/registry/current) and the GitLab production logs
for errors (for example/var/log/gitlab/gitlab-rails/production.log). You may be able to find clues
there.
Use object storage
If you want to store your images on object storage, you can change the storage
driver for the Container Registry.
Read more about using object storage with GitLab.
Omnibus GitLab installations
To configure the s3 storage driver in Omnibus:
Edit
/etc/gitlab/gitlab.rb:To avoid using static credentials, use an
IAM role
and omitaccesskeyandsecretkey. Make sure that your IAM profile follows
the permissions documented by Docker.If using with an AWS S3 VPC endpoint,
then setregionendpointto your VPC endpoint address and setpath_styleto false:Save the file and reconfigure GitLab for the changes to take effect.
Installations from source
Configuring the storage driver is done in the registry configuration YML file created
when you deployed your Docker registry.
s3 storage driver example:
your-s3-bucket should be the name of a bucket that exists, and can’t include subdirectories.
Using self-signed certificates with container registry
If you’re using a self-signed certificate with your Container Registry, you
might encounter issues during the CI jobs like the following:
The Docker daemon running the command expects a cert signed by a recognized CA,
thus the error above.
While GitLab doesn’t support using self-signed certificates with Container
Registry out of the box, it is possible to make it work by
instructing the Docker daemon to trust the self-signed certificates,
mounting the Docker daemon and setting privileged = false in the GitLab Runner
config.toml file. Setting privileged = true takes precedence over the Docker daemon:
Additional information about this: issue 18239.
Example error:
Базовые принципы:
Docker представляет из себя дополнительный уровень абстракции; систему, автоматизирующую виртуализацию на уровне операционной системы.
“Виртуализация на уровне операционной системы — метод виртуализации, при котором ядро операционной системы поддерживает несколько изолированных экземпляров пространства пользователя, вместо одного. Эти экземпляры (часто называемые контейнерами или зонами) с точки зрения пользователя полностью идентичны реальному серверу. Ядро обеспечивает полную изолированность контейнеров, поэтому программы из разных контейнеров не могут воздействовать друг на друга.”
From Wikipedia
Основные преимущества использования Docker:
Далее расмотрим основные команды, которые нам понадобятся для создания кластера:
Добавление ssh ключа
Для работы с Git и GitLab можно указать публичный SSH ключ, чтобы не приходилось каждый раз вводить пароль вашей учетной записи.
Введите команду (если у вас уже существует ключ):
cat ~/.ssh/id_rsa.pub
Команда вернет следующий результат:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5onOVtATUjVkqk91lq v0g5TzOZTMBp4avWLEZO/97jQa1PL7y4zx4iOmUDOdlux/gC QSW0knti/yJrtzPJibDOedRJ9KkPPGpyD1JPqRGiy3eEY2gs755McfopX6U99aYjUVBgtcfX5AXp1 5Dd9jJEFhhEDDD/WEVfYERP1ZjybaRWy6vykkPa5W2YloXRIJq/kJk9ubtd5iGnRJfDZrkza2Q97ruNGWbeEty4rgDVNwb/Znz84qt9DzzI9rvlZTfB/9EApmB0Y7eu6vR3AG5T3gBZIAYGdurdqbIj/dI8nUduE9AImzlGxeACKs0iOi/037u5gvB gitlab@netpoint-dc.ml
Это пример ключа. У вас будут свои данные
Скопируйте публичный ключ полностью, перейдите в настройки профиля и нажмите на ссылку «SSH Keys» слева. Вставьте ключ в большое поле и напишите его название в поле Title. Для сохранения (добавления) ключа нажмите на кнопку «Add key».
Если публичного ключа у вас нет, вы получите примерно следующий ответ от команды:
cat: /home/gitlab/.ssh/id_rsa.pub: No such file or directory
Для генерации связки приватного и публичного ключа введите команду:
ssh-keygen -t rsa
У вас должно получиться примерно следующее:
На все вопросы в процессе генерации можно нажимать клавишу «Enter» или ввести подходящую вам директорию.
Снова введите команду для просмотра содержимого публичного ключа
cat ~/.ssh/id_rsa.pub
Скопируйте ключ и введите его в свойствах профиля.
Использование сертификата let’s encrypt для remote desktop services
Если вы используете для подключения внешних пользователей в корпоративную сеть шлюз Remote Desktop Gateway/ RD Web Access, вы можете использовать нормальный SSL сертификат Let’s Encrypt вместо обычного самоподписанного сертификата. Рассмотрим, как корректно установить сертификат Let’s Encrypt для зажиты служб Remote Desktop Services в Windows Server.
Если на Remote Desktop Gateway сервере поднята также роль RDSH, нужно запретить пользователям Read доступ к каталогу, в котором у вас хранится WACS (в моем примере это c:inetpubletsencrypt ) и к каталогу с сертификатами сертификат Let’s Encrypt (C:
Затем на сервере RDP GW, запускаете wacs.exe, как описано выше, и вы выбираете нужный сайт IIS (обычно, Default Web Site). Let’s Encrypt выдает вам новый сертификат, который устанавливается для веб-сайта и в планировщике появляется задание на автоматические обновление сертификата.
Вы можете вручную экспортировать данный сертификат и привязать его к нужным службам RDS через SSL binding. Но вам придется выполнять эти действия вручную каждые 60 дней при перевыпуске сертификата Let’s Encrypt.
Нам нужен скрипт, который бы сразу после получения (продления) сертификата Let’s Encrypt применял бы его для RD Gateway.
Как установить ssl-сертификат на nginx
После активации сертификата вам будут доступны необходимые данные для его установки, подробнее в статье Где взять данные для установки SSL-сертификата.
Также вы можете использовать для установки сертификат, купленный в сторонней компании.
Рассмотрим, как выполняется установка и настройка Nginx SSL:
- 1.
- 2.
Создайте файл your_domain.key и скопируйте в него содержание приватного ключа сертификата.
- 3.
Загрузите созданные файлы your_domain.crt и your_domain.key на сервер в директорию /etc/ssl/. Директория может быть иной, например /etc/nginx/ssl/your_domain.com.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
Сохраните и закройте конфигурационный файл Nginx.
- 11.
- 12.
Готово, вы установили SSL-сертификат на Nginx.
Настройка nginx для поддержки ssl
Примечание: В руководстве предполагается, что вы используете виртуальный хост (блок server) default, который хранится в каталоге /etc/nginx/sites-available. Если вы используете другой файл, пожалуйста, укажите его имя.
Для начала создайте резервную копию файла блока server.
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
Затем откройте файл блока server в текстовом редакторе:
sudo nano /etc/nginx/sites-available/default
Файл должен выглядеть примерно так:
server {listen 80 default_server;listen [::]:80 default_server;# SSL configuration# listen 443 ssl default_server;# listen [::]:443 ssl default_server;. . .
Настройка ssl
Теперь нужно создать другой сниппет, предназначенный для настроек SSL. Он позволит серверу Nginx использовать надёжный механизм шифрования и включит некоторые дополнительные функции безопасности.
Эти установленные параметры можно повторно использовать в будущих конфигурациях Nginx, потому этому файлу лучше дать какое-нибудь общее имя:
sudo nano /etc/nginx/snippets/ssl-params.conf
Для безопасной настройки SSL обратимся к рекомендациям Remy van Elst на сайте Cipherli.st. Этот сайт предназначен для распространения простых и надёжных параметров шифрования для популярного программного обеспечения. Больше параметров для Nginx можно найти здесь.
Примечание: Данный список настроек подходит для более новых клиентов. Чтобы получить настройки для других клиентов, перейдите по ссылке Yes, give me a ciphersuite that works with legacy / old software.
Скопируйте все предложенные параметры. Остаётся только добавить в них DNS распознаватель для восходящего канала запросов. В руководстве для этого используется Google.
Также нужно добавить параметр ssl_dhparam, чтобы настроить поддержку ключей Диффи-Хеллмана.
Подготовка к установке gitlab
Обновите индекс пакетов командой:
Debian/Ubuntu
apt-get update
CentOS
yum update
Выполните установку дополнительных компонентов:
Debian/Ubuntu
apt-get install ca-certificates curl postfix
CentOS
yum install curl policycoreutils postfix
Во время установки будет открыто диалоговое окно для настройки MTA Postfix (почтового сервера). Выберите пункт «Интернет-сайт».
В следующем окне введите реально существующее доменное имя. Доменное имя будет использоваться для отправки с него писем.
Вы можете ввести IP адрес сервера вместо доменного имени, но в таком случае доставка писем на внешние почтовые серверы не гарантируется.
Порт 22
Суть в данных строках:
–publish 2289:22
Если работа с рабочей машиной производится через SSH-протокол, то мы не можем создавать связку напрямую “22:22”, так как порт 22 уже занят сервисом sshd.
Решение этой проблемы описано в официальной документации gitlab-ce. Все просто: мы привязываем любой другой (кроме 22) порт внутри сервера к 22 порту внутри контейнера. В данном примере используется порт 2289.
Параллельно с этим важно не забыть добавить
gitlab_rails[‘gitlab_shell_ssh_port’] = 2289;
В настройки самого GitLab.
Таким образом после запуска gitlab-ce и создания в нем самом какого-либо репозитория работа с ним будет производится по адресу в стиле:
Преамбула
Начнем, конечно же, с постановки задачи и определения основных технологий/методик, используемых в гайде.
С самого начала я заинтерисовался Docker’ом с целью быстрого создания небольшого, но довольно универсального кластера под собственные проекты (рабочие, учебные, etc). Так как системным администрированием я профессионально заниматься не собирался — я решил, что должен обучиться основам кластеризации ровно до того момента, когда я смог бы без особых затруднений разворачивать любой популярный программный стек для веб-проекта. Далее я рассмотрю разворачивание на Docker следующих конфигураций:
Первые две в представлении, думаю, не нуждаются. Третяя же состоит из MongoDB, Express.js, Node.js. MEAN я чаще всего использовал для написания RESTful API, например, для дальнейшего разрабатывания на его основе мобильного приложения.
После этого я сам себе немного усложнил задачу, добавив следующие требования:
Системные требования
Рекомендуется использовать не менее 8 ГБ оперативной памяти и процессор не менее 2-ух ядер. Более подробно о системных требованиях можно прочитать в документации GitLab.
GitLab может быть установлен в следующих дистрибутивах Linux:
- Ubuntu;
- Debian;
- CentOS;
- openSUSE;
- Red Hat Enterprise Linux (CentOS);
- Scientific Linux (CentOS);
- Oracle Linux (CentOS).
После установки операционной системы подключитесь к ней по SSH для выполнения действий на сервере, где будет работать GitLab CE.
Стандартный процес обновления gitlab-ce
Это последний момент, который я хочу отдельно осветить в этом гайде.
Процесс обновления GitLab с помощью Docker упрощается до нескольких команд:
docker stop custom-gitlab— останавливаем работающий контейнер;docker rm custom-gitlab— удаляем контейнер GitLab CE.Важный момент: удаление контейнера не означает удаление данных, которые были созданы в процесе использования системы. Поэтому вы можете выполнять эту команду без каких-либо опасений.
docker pull gitlab/gitlab-ce— собственно обновление изображения контейнера;- выполняем длинную команду (пример выше), с помощью которой мы изначально запускали контейнер.
Вот и все. Выполнив эти 4 команды, GitLab автоматически обновится до последний версии и запустится через Docker Engine.
Установить ssl /tls сертификат в windows iis 10 –
Время, необходимое: 30 минут.
Это руководство поможет вам загрузить и установить SSL /TLS сертификат от my-sertif.ru в IIS. Эти процедуры были протестированы в Windows 10 в IIS 10, но также будут работать в IIS 7.x и 8.x.
Сначала найдите заказ в своей учетной записи my-sertif.ru и щелкните один из скачать ссылки.
Затем, щелкните скачать ссылка на право Microsoft IIS (* .p7b) в загрузка сертификатов таблице.
Start Диспетчер IIS, Один быстрый способ сделать это, открыв Запустите затем введите команду inetmgr и нажмите OK кнопку.
Выберите сервер в Беспроводные сети панель, с левой стороны окна.
Дважды щелкните Сертификаты сервера значок, расположенный под IIS в центральной панели окна.
Нажмите на Завершить запрос сертификата… в Действия панель, на правой стороне окна.
Освободи Себя Полный запрос сертификата появится мастер. Сначала нажмите кнопку с надписью «…», Чтобы открыть диалоговое окно открытия файла.
Перейдите в .p7b файл, который вы скачали с my-sertif.ru. Обратите внимание, что вам придется изменить раскрывающееся меню справа от Имя файла поле из *.cer в *.* чтобы увидеть файл.
Нажмите Откройте кнопку.
Затем введите памятное имя для сертификата в Дружественное имя поле (здесь мы просто вводим сертификат распространенное имя).
Нажмите OK кнопку.
Сертификат установлен! Следующим шагом является связывать сертификат для определенного веб-сайта, порта и / или IP-адреса. Пожалуйста, прочитайте наш инструкции по привязке в IIS для полных инструкций.
Если вы получили сообщение об отсутствии закрытого ключа / запроса сертификата, попробуйте следующее из командной строки, открытой от имени администратора (замените «серийный номер» фактическим серийным номером вашего сертификата в кавычках, включая пробелы):certutil -repairstore my "serial number"
Подробные инструкции доступны здесь.

Установка ssl сертификата в microsoft iis 10
В данной статье описан Импорт SSL сертификата в IIS 10, выпуск SSL сертификата был описан ранее. Для импорта нам потребуется конвертировать сертификат из PEM в PFX. Для этого используем OpenSSL на сервере, если его нет или вы не знаете его команд, можно использовать онлайн Конвертер или его аналоги.
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt

Для надежности заполняем PFX Password и запоминаем/записываем пароль (желательно символьно-числовой), без него сертификат не установить.
Импорт SSL сертификата
Поиском открываем консоль Microsoft Management Console (MMC), достаточно ввести mmc и ее нам найдет.
В окне консоли «Файл» > «Добавить/удалить оснастку»

Далее, в окне «Добавление и удаление оснасток» на панели «Доступные оснастки» (слева) выберите «Сертификаты» и нажмите «Добавить>».
Видим окно «Оснастка диспетчера сертификатов» > выберите «учетной записи компьютера» и нажмите «Далее>».

В окне «Выбор компьютера» выберите «Локальным компьютером (тем, на котором выполняется эта консоль)» и нажмите «Готово».

В окне «Добавление и удаление оснасток» нажмите «ОК».
В окне консоли (Корень консоли, слева), щелкните правой кнопкой мыши (ПКМ) на папку «Размещение Веб-служб» и выберите «Все задачи» > «Импорт».

Видим окно Мастер импорта сертификатов и нажимаем кнопку Далее.

На странице импорта найдите через «Обзор» и выберите файл, который вы хотите импортировать, а затем нажмите «Далее».
Заранее файл был добавлен в C:WindowsSystem32 (Вы можете поместить его в иной каталог). Примечание: в окне «Проводника» в раскрывающемся списке «Тип файла» обратите внимание на типов файлов и выберите «Все файлы» (*.*) или (*.pfx), для поиска файла сертификата.

В окне «Защита с помощью закрытого ключа» задаем пароль, который указывали при конвертации сертификата в PFX и проверяем галочки, как на изображении ниже:

нажимаем «Далее»
На странице «Хранилища сертификатов» выбираем «Поместить все сертификаты в следующее хранилище», где в окне «Выбор хранилища сертификатов» выберите «Размещение Веб-служб» и нажмите «ОК». Нажмите кнопку «Далее»

На странице «Завершение мастера импорта сертификатов» проверяем правильность настроек и нажимаем кнопку Готово.

Вы должны получить сообщение «Импорт выполнен успешно».
Сертификат SSL с закрытым ключом в файле .pfx теперь сохранен в хранилище хостинга.
Как настроить Windows Server для использования импортированного сертификата SSL
После импорта сертификата SSL в Windows Server необходимо настроить IIS 10, чтобы импортированный сертификат давал защиту вашему сайту.
Откройте «Диспетчер служб IIS» > в дереве меню Подключения (левая панель) разверните панель и выберите сайт (у нас это Default Web Site). Видим «Начальная страница Default Web Site» (по центру), где в меню «Действия» (правая панель) в разделе «Изменение веб-сайта» щелкните на ссылку «Привязки…». В окне «Привязки сайта» нажмите «Добавить»

В окне «Добавление привязки сайта» выполните следующие действия и нажмите кнопку «ОК»:
Тип: из списка выберите https
IP-адрес: выберите «Все неназначенные»
Порт: 443 (Порт, через который трафик будет зашифрован с помощью SSL по умолчанию 443)
SSL-Сертификат: В раскрывающемся списке выберите сертификат SSL (надо указать точное имя установленного сертификата, у нас domainssl.ua)

Готово, SSL-сертификат установлен и сайт настроен на безопасное соединение. Можно закрыть окно.

Настройка перенаправления HTTP на HTTPS в IIS
После того как мы установили сертификат SSL, сайт по-прежнему остается доступным через обычное соединение HTTP, которое считается небезопасным. Для безопасного подключения посетители должны самостоятельно указать https:// при вводе адреса вашего сайта (домена) в своих браузерах и зачастую этого никто не делает.
Чтобы установить безопасное соединение на вашем сайте, необходимо настроить правило перенаправления (редирект) HTTP на HTTPS. После чего, любой посетитель вашего сайта переходя/вводя домен «yourdomain.com», будет перенаправлен на «https://yourdomain.com» или «https://www.yourdomain.com» (в зависимости от вашего выбора), где весь трафик зашифрован при передаче между сервером и клиентом.
Откройте «Диспетчер служб IIS» > в дереве меню Подключения (левая панель) разверните панель и выберите сайт (у нас это Default Web Site). Видим «Начальная страница Default Web Site», где дважды щелкнуть (ЛКМ) на значок «Переопределение URL-адресов».

Если URL Rewrite Module отсутствует, качаем его на сайте IIS
В окне «Добавить правила» меню «Правила для входящего трафика» выберите «Пустое правило», затем нажмите ОК.

Указываем Имя правилу и заполняем ниже расположенные разделы:
В разделе «Соответствует URL-адресу»:
– Указать «Соответствует шаблону» из меню «Запрошенный URL-адрес».
– Указать «Регулярные выражения» из меню «Использование».
– Шаблон: (. *)
– Установить флажок «Не учитывать регистр»
В разделе «Условия» выберите «Совпадение со всеми» из меню «Логическая группировка» и нажмите «Добавить».
В появившемся окне «Добавить условие»:
– Введите {HTTPS} в поле «Ввод условия»
– Выберите «Соответствует шаблону» из выпадающего списка
– Введите ^ OFF $ в поле «Шаблон»
– Флажок «Не учитывать регистр»
– Нажмите ОК

В разделе «Действие» выберите «Перенаправление» из меню «Типа действия» и укажите в поле «URL-адрес перенаправления»:
https://{HTTP_HOST}/{R:1}Установите флажок «Добавить строку запроса»
Выберите «Постоянное (301)» из меню «Тип перенаправления»

Нажмите «Применить» вверху справа из меню «Действия».
Теперь нам нужно применить правило к самому сайту.

В «Диспетчер служб IIS» щелкните ПКМ на свой сайт (у нас это Default Web Site) и выберите «Проводник», откроется корневой каталог сайта, где найдите файл web.config и откройте его. Проверьте содержимое на следующий блок кода (если его нет, добавьте). Также, не лишним будет сделать бекап файла web.config в случае неудачи, можно вернуть старый файл. Главное вписать код в соответствующие блоки в файле.
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name=”HTTPS force” enabled=”true” stopProcessing=”true”>
<match url=”(.*)” />
<conditions>
<add input=”{HTTPS}” pattern=”^OFF$” />
</conditions>
<action type=”Redirect” url=”https://{HTTP_HOST}/{R:1}” redirectType=”Permanent” />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>Если web.config отсутствует, создайте новый файл ТХТ (например, 1.txt) и вставьте в него код, сохраните, а потом переименуйте файл в web.config
Теперь перенаправление можно проверить, перейдя на сайт по адресу http:// но откроет https:// и браузер покажет Безопасное соединение и замочек.
Можно использовать анонимный режим браузера (Ctrl Shift N для Chrome) и отладчик (F12).
