我正在尝试进行RRSIG验证,我正在尝试在PHP中使用openssl lib.但我有一个问题是将公钥传递给该openssl_verify函数.
这是一个基本代码,使用Net/DNS2库通过DNSSEC选项执行DNS查询.并获得DNSKEY和RRSIG.
<?php
require_once 'Net/DNS2.php';
$r = new Net_DNS2_Resolver(array('nameservers' => array('127.0.0.1')));
$r->dnssec = true;
try {
$result = $r->query('ip4afrika.nl', 'DNSKEY');
} catch(Net_DNS2_Exception $e) {
echo "::query() failed: ", $e->getMessage(), "\n";
die(); //
}
// print_r($result->answer);
$public_key_bin = base64_decode( $result->answer[0]->key ) ;
$public_key_str = $result->answer[0]->key; //echo $public_key_str; die();
// $public_key_res = openssl_x509_parse($public_key_bin);
$public_key_res = openssl_x509_read($public_key_str);
// $public_key_res = openssl_pkey_get_public($public_key_str);
while ($msg = openssl_error_string()) echo $msg . PHP_EOL;
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息,
使用时:
$public_key_res = openssl_x509_read($public_key_str);
PHP Warning: openssl_x509_read(): supplied …Run Code Online (Sandbox Code Playgroud) 我有一个简单的 vlan 配置文件,我喜欢让密钥与 JunOS 语法匹配(这样我可以根据需要将它们作为聚合传递),所以我使用vlan-id像此示例变量文件一样的密钥。
# vlans.yaml
vlans:
- name: general
description: "General"
vlan-id: 100
- name: hotline
description: "Accounting"
vlan-id: 110
Run Code Online (Sandbox Code Playgroud)
但由于连字符,我无法访问 vlan-id 密钥
- debug:
msg: "{{ item.vlan-id }}"
loop: "{{ vlans }}"
tags: debug
Run Code Online (Sandbox Code Playgroud)
"msg": "The task includes an option with an undefined variable. The error was: 'dict object' has no attribute 'vlan'
Run Code Online (Sandbox Code Playgroud)
如果我直接输出该项目,我可以看到密钥
- debug:
msg: "{{ item }}"
loop: "{{ vlans }}
Run Code Online (Sandbox Code Playgroud)
ok: [SW02] => (item={'name': 'external', 'description': 'External', 'vlan-id': 209}) => { …Run Code Online (Sandbox Code Playgroud) 尝试在when语句中使用多个和/或条件来决定是否需要运行任务时,我遇到了问题.基本上我正在制作一本剧本来自动化系统修补,其中包括安全补丁,仅内核补丁和在var文件中指定包的选项.
我使用以下命令运行playbook并通过扩展变量选项定义变量(-e)
ansible-playbook site.yml -i inventory --ask-vault -u (username) -e "security=true restart=true" -k -K
默认情况下,playbook将更新除内核之外的系统上的每个包,但如果我指定任何一些变量,我想跳过该操作.我的代码如下:
- name: Update all packages
yum:
name: "*"
state: latest
exclude: "kernel*"
when: security is not defined or kernel is not defined or specified_packages
is not defined and ansible_os_family == "RedHat"
Run Code Online (Sandbox Code Playgroud)
我尝试了以下所有组合:
when: (ansible_os_family == "RedHat") and (security is defined or kernel is defined or specified_packages is defined)
when: (ansible_os_family == "RedHat") and (security == true or kernel == true or specified_packages == true ) …