Ошибка проверки SSL-сертификата в Puppet

Хорошо, если вы не хотите менять свои перья и просматривать иерархию, как предложил Дэвид С., этот метод сделает это за вас. Чтобы добавить закругленные углы и тени к вашему UIImageView, просто используйте этот метод, например:

[Utils roundCornersForImageView:myImageView withCornerRadius:6.0 
andShadowOffset:2.0];

(!) По соображениям производительности я не думаю, что это хорошая идея использовать этот код в чем-то вроде UITableView, поскольку этот код изменяет иерархию представлений. Поэтому я предлагаю изменить ваш наконечник и добавить представление контейнера для эффекта тени и использовать код Davic C.

+ (void)roundCornersForImageView:(UIImageView *)imageView 
withCornerRadius:(float)cornerRadius andShadowOffset:(float)shadowOffset
{
    const float CORNER_RADIUS = cornerRadius;
    const float BORDER_WIDTH = 1.0; 
    const float SHADOW_OFFSET = shadowOffset;
    const float SHADOW_OPACITY = 0.8;
    const float SHADOW_RADIUS = 3.0;

    //Our old image now is just background image view with shadow
    UIImageView *backgroundImageView = imageView;
    UIView *superView = backgroundImageView.superview;

    //Make wider actual visible rect taking into account shadow
    //offset
    CGRect oldBackgroundFrame = backgroundImageView.frame;
    CGRect newBackgroundFrame = CGRectMake(oldBackgroundFrame.origin.x, oldBackgroundFrame.origin.y, oldBackgroundFrame.size.width + SHADOW_OFFSET, oldBackgroundFrame.size.height + SHADOW_OFFSET);
    [backgroundImageView removeFromSuperview];
    backgroundImageView.frame = newBackgroundFrame;        

    //Make new UIImageView with rounded corners and put our old image
    CGRect frameForRoundedImageView = CGRectMake(0, 0, oldBackgroundFrame.size.width, oldBackgroundFrame.size.height);
    UIImageView *roundedImageView = [[UIImageView alloc]initWithFrame:frameForRoundedImageView];
    roundedImageView.image = imageView.image;
    [roundedImageView.layer setCornerRadius:CORNER_RADIUS];
    [roundedImageView.layer setBorderColor:[UIColor lightGrayColor].CGColor];        
    [roundedImageView.layer setBorderWidth:BORDER_WIDTH]; 
    [roundedImageView.layer setMasksToBounds:YES];

    //Set shadow preferences
    [backgroundImageView setImage:nil];
    [backgroundImageView.layer setShadowColor:[UIColor blackColor].CGColor];
    [backgroundImageView.layer setShadowOpacity:SHADOW_OPACITY];
    [backgroundImageView.layer setShadowRadius:SHADOW_RADIUS];
    [backgroundImageView.layer setShadowOffset:CGSizeMake(SHADOW_OFFSET, SHADOW_OFFSET)];   

    //Add out two image views back to the view hierarchy.
    [backgroundImageView addSubview:roundedImageView];
    [superView addSubview:backgroundImageView];   
}    
0
задан leoOrion 17 January 2019 в 12:16
поделиться

1 ответ

В соответствии со своей конфигурацией агент использует имя «puppetserver» для идентификации и связи с сервером. Его вывод подтверждает это.

Агент успешно создает CSR, отправляет его на компьютер «puppetserver» и получает подписанный сертификат. Это показывает, что он успешно связывается с сервером, и есть все основания ожидать, что сервер примет сертификат, который он только что подписал.

По-видимому, проблема в свидетельстве магистра. Скорее всего, это связано с тем, что машина сервера puppet самоопознается как «puppet.openvpn», так что это, вероятно, имя, для которого выдается сертификат мастера, тогда как агент использует другое имя для связи с мастером. Несоответствие между именем в сертификате и представлением агентом названия машины, с которой он говорит, является хорошей причиной для агента отклонить сертификат.

Возможно, с некоторым вниманием к пользовательской конфигурации, организовать для мастер-сертификата имя, отличное от его собственного представления об имени хоста. Проще, однако, просто соответствовать имени, используемому для идентификации этой машины. И в соответствии с этим я рекомендую постоянно полагаться на полностью квалифицированные имена.

В качестве отдельного вопроса вы также столкнетесь с проблемами при работе с агентами, которые имеют одинаковые имена хостов (т.е. localhost.localdomain), если, опять же, вы не позаботитесь о конфигурации их марионеток, чтобы убедиться, что они используют разные , уникальные имена на своих сертификатах. Путь наименьшего сопротивления состоит в том, чтобы дать собственные имена вашим машинам и сделать это до регистрации их у мастера Puppet.

0
ответ дан John Bollinger 17 January 2019 в 12:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: