Error 18 at 0 depth lookup self signed certificate

Here are the log files for both the client and the server.

Here are the log files for both the client and the server.

SERVER

Code: Select all

2012-05-15 22:13:35 *Tunnelblick: OS X 10.7.3; Tunnelblick 3.2.6 (build 2891.3007)
2012-05-15 22:13:35 *Tunnelblick: Attempting connection with server; Set nameserver = 1; monitoring connection
2012-05-15 22:13:35 *Tunnelblick: /Applications/Tunnelblick.app/Contents/Resources/openvpnstart start server.ovpn 1338 1 0 0 0 49 -atDASNGWrdasngw 
2012-05-15 22:13:35 *Tunnelblick: openvpnstart: /Applications/Tunnelblick.app/Contents/Resources/openvpn/openvpn-2.2.1/openvpn --cd /Users/michael/Library/Application Support/Tunnelblick/Configurations --daemon --management 127.0.0.1 1338 --config /Users/michael/Library/Application Support/Tunnelblick/Configurations/server.ovpn --log /Library/Application Support/Tunnelblick/Logs/-SUsers-Smichael-SLibrary-SApplication Support-STunnelblick-SConfigurations-Sserver.ovpn.1_0_0_0_49.1338.openvpn.log --management-query-passwords --management-hold --script-security 2 --up /Applications/Tunnelblick.app/Contents/Resources/client.up.tunnelblick.sh -m -w -d -atDASNGWrdasngw --down /Applications/Tunnelblick.app/Contents/Resources/client.down.tunnelblick.sh -m -w -d -atDASNGWrdasngw --up-restart
2012-05-15 22:13:36 *Tunnelblick: openvpnstart message: Loading tun.kext
2012-05-15 22:13:36 us=35673 Current Parameter Settings:
2012-05-15 22:13:36 us=35900   config = '/Users/michael/Library/Application Support/Tunnelblick/Configurations/server.ovpn'
2012-05-15 22:13:36 us=35916   mode = 1
2012-05-15 22:13:36 us=35929   show_ciphers = DISABLED
2012-05-15 22:13:36 us=35942   show_digests = DISABLED
2012-05-15 22:13:36 us=35955   show_engines = DISABLED
2012-05-15 22:13:36 us=35968   genkey = DISABLED
2012-05-15 22:13:36 us=35985   key_pass_file = '[UNDEF]'
2012-05-15 22:13:36 us=35999   show_tls_ciphers = DISABLED
2012-05-15 22:13:36 us=36011 Connection profiles [default]:
2012-05-15 22:13:36 us=36024   proto = tcp-server
2012-05-15 22:13:36 us=36037   local = '[UNDEF]'
2012-05-15 22:13:36 us=36050   local_port = 1194
2012-05-15 22:13:36 us=36063   remote = '[UNDEF]'
2012-05-15 22:13:36 us=36076   remote_port = 1194
2012-05-15 22:13:36 us=36089   remote_float = DISABLED
2012-05-15 22:13:36 us=36102   bind_defined = DISABLED
2012-05-15 22:13:36 us=36115   bind_local = ENABLED
2012-05-15 22:13:36 us=36128   connect_retry_seconds = 5
2012-05-15 22:13:36 us=36141   connect_timeout = 10
2012-05-15 22:13:36 us=36154   connect_retry_max = 0
2012-05-15 22:13:36 us=36167   socks_proxy_server = '[UNDEF]'
2012-05-15 22:13:36 us=36180   socks_proxy_port = 0
2012-05-15 22:13:36 us=36192   socks_proxy_retry = DISABLED
2012-05-15 22:13:36 us=36205 Connection profiles END
2012-05-15 22:13:36 us=36218   remote_random = DISABLED
2012-05-15 22:13:36 us=36231   ipchange = '[UNDEF]'
2012-05-15 22:13:36 us=36243   dev = 'tun'
2012-05-15 22:13:36 us=36256   dev_type = '[UNDEF]'
2012-05-15 22:13:36 us=36269   dev_node = '[UNDEF]'
2012-05-15 22:13:36 us=36282   lladdr = '[UNDEF]'
2012-05-15 22:13:36 us=36295   topology = 1
2012-05-15 22:13:36 us=36308   tun_ipv6 = DISABLED
2012-05-15 22:13:36 us=36321   ifconfig_local = '10.10.46.1'
2012-05-15 22:13:36 us=36333   ifconfig_remote_netmask = '10.10.46.2'
2012-05-15 22:13:36 us=36346   ifconfig_noexec = DISABLED
2012-05-15 22:13:36 us=36359   ifconfig_nowarn = DISABLED
2012-05-15 22:13:36 us=36372   shaper = 0
2012-05-15 22:13:36 us=36385   tun_mtu = 1500
2012-05-15 22:13:36 us=36398   tun_mtu_defined = ENABLED
2012-05-15 22:13:36 us=36411   link_mtu = 1500
2012-05-15 22:13:36 us=36424   link_mtu_defined = DISABLED
2012-05-15 22:13:36 us=36436   tun_mtu_extra = 0
2012-05-15 22:13:36 us=36449   tun_mtu_extra_defined = DISABLED
2012-05-15 22:13:36 us=36462   fragment = 0
2012-05-15 22:13:36 us=36475   mtu_discover_type = -1
2012-05-15 22:13:36 us=36488   mtu_test = 0
2012-05-15 22:13:36 us=36501   mlock = DISABLED
2012-05-15 22:13:36 us=36514   keepalive_ping = 10
2012-05-15 22:13:36 us=36526   keepalive_timeout = 120
2012-05-15 22:13:36 us=36539   inactivity_timeout = 0
2012-05-15 22:13:36 us=36552   ping_send_timeout = 10
2012-05-15 22:13:36 us=36565   ping_rec_timeout = 240
2012-05-15 22:13:36 us=36578   ping_rec_timeout_action = 2
2012-05-15 22:13:36 us=36591   ping_timer_remote = DISABLED
2012-05-15 22:13:36 us=36603   remap_sigusr1 = 0
2012-05-15 22:13:36 us=36616   explicit_exit_notification = 0
2012-05-15 22:13:36 us=36629   persist_tun = ENABLED
2012-05-15 22:13:36 us=36642   persist_local_ip = DISABLED
2012-05-15 22:13:36 us=36655   persist_remote_ip = DISABLED
2012-05-15 22:13:36 us=36668   persist_key = ENABLED
2012-05-15 22:13:36 us=36681   mssfix = 1450
2012-05-15 22:13:36 us=36693   passtos = DISABLED
2012-05-15 22:13:36 us=36706   resolve_retry_seconds = 1000000000
2012-05-15 22:13:36 us=36719   username = '[UNDEF]'
2012-05-15 22:13:36 us=36735   groupname = '[UNDEF]'
2012-05-15 22:13:36 us=36748   chroot_dir = '[UNDEF]'
2012-05-15 22:13:36 us=36761   cd_dir = '/Users/michael/Library/Application Support/Tunnelblick/Configurations'
2012-05-15 22:13:36 us=36789   writepid = '[UNDEF]'
2012-05-15 22:13:36 us=36803   up_script = '/Applications/Tunnelblick.app/Contents/Resources/client.up.tunnelblick.sh -m -w -d -atDASNGWrdasngw'
2012-05-15 22:13:36 us=36817   down_script = '/Applications/Tunnelblick.app/Contents/Resources/client.down.tunnelblick.sh -m -w -d -atDASNGWrdasngw'
2012-05-15 22:13:36 us=36830   down_pre = DISABLED
2012-05-15 22:13:36 us=36842   up_restart = ENABLED
2012-05-15 22:13:36 us=36855   up_delay = DISABLED
2012-05-15 22:13:36 us=36871   daemon = ENABLED
2012-05-15 22:13:36 us=36889   inetd = 0
2012-05-15 22:13:36 us=36902   log = ENABLED
2012-05-15 22:13:36 us=36915   suppress_timestamps = DISABLED
2012-05-15 22:13:36 us=36928   nice = 0
2012-05-15 22:13:36 us=36944   verbosity = 4
2012-05-15 22:13:36 us=36958   mute = 0
2012-05-15 22:13:36 us=36970   gremlin = 0
2012-05-15 22:13:36 us=36983   status_file = 'openvpn-status.log'
2012-05-15 22:13:36 us=36996   status_file_version = 1
2012-05-15 22:13:36 us=37009   status_file_update_freq = 60
2012-05-15 22:13:36 us=37022   occ = ENABLED
2012-05-15 22:13:36 us=37035   rcvbuf = 65536
2012-05-15 22:13:36 us=37047   sndbuf = 65536
2012-05-15 22:13:36 us=37060   sockflags = 0
2012-05-15 22:13:36 us=37077   fast_io = DISABLED
2012-05-15 22:13:36 us=37091   lzo = 7
2012-05-15 22:13:36 us=37104   route_script = '[UNDEF]'
2012-05-15 22:13:36 us=37117   route_default_gateway = '[UNDEF]'
2012-05-15 22:13:36 us=37130   route_default_metric = 0
2012-05-15 22:13:36 us=37143   route_noexec = DISABLED
2012-05-15 22:13:36 us=37155   route_delay = 0
2012-05-15 22:13:36 us=37168   route_delay_window = 30
2012-05-15 22:13:36 us=37181   route_delay_defined = DISABLED
2012-05-15 22:13:36 us=37194   route_nopull = DISABLED
2012-05-15 22:13:36 us=37207   route_gateway_via_dhcp = DISABLED
2012-05-15 22:13:36 us=37220   max_routes = 100
2012-05-15 22:13:36 us=37233   allow_pull_fqdn = DISABLED
2012-05-15 22:13:36 us=37247   route 10.10.46.0/255.255.255.0/nil/nil
2012-05-15 22:13:36 us=37261   management_addr = '127.0.0.1'
2012-05-15 22:13:36 us=37274   management_port = 1338
2012-05-15 22:13:36 us=37287   management_user_pass = '[UNDEF]'
2012-05-15 22:13:36 us=37301   management_log_history_cache = 250
2012-05-15 22:13:36 us=37315   management_echo_buffer_size = 100
2012-05-15 22:13:36 us=37329   management_write_peer_info_file = '[UNDEF]'
2012-05-15 22:13:36 us=37342   management_client_user = '[UNDEF]'
2012-05-15 22:13:36 us=37356   management_client_group = '[UNDEF]'
2012-05-15 22:13:36 us=37369   management_flags = 6
2012-05-15 22:13:36 us=37382   shared_secret_file = '[UNDEF]'
2012-05-15 22:13:36 us=37396   key_direction = 0
2012-05-15 22:13:36 us=37409   ciphername_defined = ENABLED
2012-05-15 22:13:36 us=37422   ciphername = 'BF-CBC'
2012-05-15 22:13:36 us=37436   authname_defined = ENABLED
2012-05-15 22:13:36 us=37449   authname = 'SHA1'
2012-05-15 22:13:36 us=37462   prng_hash = 'SHA1'
2012-05-15 22:13:36 us=37476   prng_nonce_secret_len = 16
2012-05-15 22:13:36 us=37489   keysize = 0
2012-05-15 22:13:36 us=37502   engine = DISABLED
2012-05-15 22:13:36 us=37515   replay = ENABLED
2012-05-15 22:13:36 us=37529   mute_replay_warnings = DISABLED
2012-05-15 22:13:36 us=37542   replay_window = 64
2012-05-15 22:13:36 us=37555   replay_time = 15
2012-05-15 22:13:36 us=37568   packet_id_file = '[UNDEF]'
2012-05-15 22:13:36 us=37582   use_iv = ENABLED
2012-05-15 22:13:36 us=37595   test_crypto = DISABLED
2012-05-15 22:13:36 us=37608   tls_server = ENABLED
2012-05-15 22:13:36 us=37625   tls_client = DISABLED
2012-05-15 22:13:36 us=37638   key_method = 2
2012-05-15 22:13:36 us=37651   ca_file = 'ca.crt'
2012-05-15 22:13:36 us=37665   ca_path = '[UNDEF]'
2012-05-15 22:13:36 us=37678   dh_file = 'dh2048.pem'
2012-05-15 22:13:36 us=37705   cert_file = 'server.crt'
2012-05-15 22:13:36 us=37719   priv_key_file = 'server.key'
2012-05-15 22:13:36 us=37732   pkcs12_file = '[UNDEF]'
2012-05-15 22:13:36 us=37745   cipher_list = '[UNDEF]'
2012-05-15 22:13:36 us=37758   tls_verify = '[UNDEF]'
2012-05-15 22:13:36 us=37771   tls_export_cert = '[UNDEF]'
2012-05-15 22:13:36 us=37784   tls_remote = '[UNDEF]'
2012-05-15 22:13:36 us=37797   crl_file = '[UNDEF]'
2012-05-15 22:13:36 us=37811   ns_cert_type = 0
2012-05-15 22:13:36 us=37824   remote_cert_ku[i] = 0
2012-05-15 22:13:36 us=37837   remote_cert_ku[i] = 0
2012-05-15 22:13:36 us=37851   remote_cert_ku[i] = 0
2012-05-15 22:13:36 us=37864   remote_cert_ku[i] = 0
2012-05-15 22:13:36 us=37877   remote_cert_ku[i] = 0
2012-05-15 22:13:36 us=37890   remote_cert_ku[i] = 0
2012-05-15 22:13:36 us=37903   remote_cert_ku[i] = 0
2012-05-15 22:13:36 us=37916   remote_cert_ku[i] = 0
2012-05-15 22:13:36 us=37929   remote_cert_ku[i] = 0
2012-05-15 22:13:36 us=37942   remote_cert_ku[i] = 0
2012-05-15 22:13:36 us=37955   remote_cert_ku[i] = 0
2012-05-15 22:13:36 us=37968   remote_cert_ku[i] = 0
2012-05-15 22:13:36 us=37981   remote_cert_ku[i] = 0
2012-05-15 22:13:36 us=37995   remote_cert_ku[i] = 0
2012-05-15 22:13:36 us=38008   remote_cert_ku[i] = 0
2012-05-15 22:13:36 us=38021   remote_cert_ku[i] = 0
2012-05-15 22:13:36 us=38034   remote_cert_eku = '[UNDEF]'
2012-05-15 22:13:36 us=38047   tls_timeout = 2
2012-05-15 22:13:36 us=38060   renegotiate_bytes = 0
2012-05-15 22:13:36 us=38074   renegotiate_packets = 0
2012-05-15 22:13:36 us=38087   renegotiate_seconds = 3600
2012-05-15 22:13:36 us=38100   handshake_window = 60
2012-05-15 22:13:36 us=38114   transition_window = 3600
2012-05-15 22:13:36 us=38127   single_session = DISABLED
2012-05-15 22:13:36 us=38140   push_peer_info = DISABLED
2012-05-15 22:13:36 us=38153   tls_exit = DISABLED
2012-05-15 22:13:36 us=38167   tls_auth_file = '[UNDEF]'
2012-05-15 22:13:36 us=38180   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:36 us=38194   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:36 us=38207   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:36 us=38221   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:36 us=38234   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:36 us=38248   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:36 us=38261   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:36 us=38275   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:36 us=38288   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:36 us=38302   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:36 us=38315   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:36 us=38329   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:36 us=38342   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:36 us=38356   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:36 us=38369   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:36 us=38383   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:36 us=38397   pkcs11_private_mode = 00000000
2012-05-15 22:13:36 us=38410   pkcs11_private_mode = 00000000
2012-05-15 22:13:36 us=38424   pkcs11_private_mode = 00000000
2012-05-15 22:13:36 us=38437   pkcs11_private_mode = 00000000
2012-05-15 22:13:36 us=38451   pkcs11_private_mode = 00000000
2012-05-15 22:13:36 us=38464   pkcs11_private_mode = 00000000
2012-05-15 22:13:36 us=38477   pkcs11_private_mode = 00000000
2012-05-15 22:13:36 us=38491   pkcs11_private_mode = 00000000
2012-05-15 22:13:36 us=38504   pkcs11_private_mode = 00000000
2012-05-15 22:13:36 us=38518   pkcs11_private_mode = 00000000
2012-05-15 22:13:36 us=38531   pkcs11_private_mode = 00000000
2012-05-15 22:13:36 us=38557   pkcs11_private_mode = 00000000
2012-05-15 22:13:36 us=38571   pkcs11_private_mode = 00000000
2012-05-15 22:13:36 us=38585   pkcs11_private_mode = 00000000
2012-05-15 22:13:36 us=38598   pkcs11_private_mode = 00000000
2012-05-15 22:13:36 us=38612   pkcs11_private_mode = 00000000
2012-05-15 22:13:36 us=38625   pkcs11_cert_private = DISABLED
2012-05-15 22:13:36 us=38638   pkcs11_cert_private = DISABLED
2012-05-15 22:13:36 us=38651   pkcs11_cert_private = DISABLED
2012-05-15 22:13:36 us=38665   pkcs11_cert_private = DISABLED
2012-05-15 22:13:36 us=38678   pkcs11_cert_private = DISABLED
2012-05-15 22:13:36 us=38691   pkcs11_cert_private = DISABLED
2012-05-15 22:13:36 us=38704   pkcs11_cert_private = DISABLED
2012-05-15 22:13:36 us=38717   pkcs11_cert_private = DISABLED
2012-05-15 22:13:36 us=38730   pkcs11_cert_private = DISABLED
2012-05-15 22:13:36 us=38743   pkcs11_cert_private = DISABLED
2012-05-15 22:13:36 us=38756   pkcs11_cert_private = DISABLED
2012-05-15 22:13:36 us=38770   pkcs11_cert_private = DISABLED
2012-05-15 22:13:36 us=38783   pkcs11_cert_private = DISABLED
2012-05-15 22:13:36 us=38796   pkcs11_cert_private = DISABLED
2012-05-15 22:13:36 us=38809   pkcs11_cert_private = DISABLED
2012-05-15 22:13:36 us=38823   pkcs11_cert_private = DISABLED
2012-05-15 22:13:36 us=38836   pkcs11_pin_cache_period = -1
2012-05-15 22:13:36 us=38850   pkcs11_id = '[UNDEF]'
2012-05-15 22:13:36 us=38863   pkcs11_id_management = DISABLED
2012-05-15 22:13:36 us=38879   server_network = 10.10.46.0
2012-05-15 22:13:36 us=38894   server_netmask = 255.255.255.0
2012-05-15 22:13:36 us=38909   server_bridge_ip = 0.0.0.0
2012-05-15 22:13:36 us=38924   server_bridge_netmask = 0.0.0.0
2012-05-15 22:13:36 us=38939   server_bridge_pool_start = 0.0.0.0
2012-05-15 22:13:36 us=38954   server_bridge_pool_end = 0.0.0.0
2012-05-15 22:13:36 us=38968   push_entry = 'route 10.10.46.1'
2012-05-15 22:13:36 us=38981   push_entry = 'topology net30'
2012-05-15 22:13:36 us=38995   push_entry = 'ping 10'
2012-05-15 22:13:36 us=39008   push_entry = 'ping-restart 120'
2012-05-15 22:13:36 us=39022   ifconfig_pool_defined = ENABLED
2012-05-15 22:13:36 us=39037   ifconfig_pool_start = 10.10.46.4
2012-05-15 22:13:36 us=39052   ifconfig_pool_end = 10.10.46.251
2012-05-15 22:13:36 us=39067   ifconfig_pool_netmask = 0.0.0.0
2012-05-15 22:13:36 us=39081   ifconfig_pool_persist_filename = 'ipp.txt'
2012-05-15 22:13:36 us=39095   ifconfig_pool_persist_refresh_freq = 600
2012-05-15 22:13:36 us=39108   n_bcast_buf = 256
2012-05-15 22:13:36 us=39121   tcp_queue_limit = 64
2012-05-15 22:13:36 us=39134   real_hash_size = 256
2012-05-15 22:13:36 us=39147   virtual_hash_size = 256
2012-05-15 22:13:36 us=39161   client_connect_script = '[UNDEF]'
2012-05-15 22:13:36 us=39174   learn_address_script = '[UNDEF]'
2012-05-15 22:13:36 us=39188   client_disconnect_script = '[UNDEF]'
2012-05-15 22:13:36 us=39202   client_config_dir = '[UNDEF]'
2012-05-15 22:13:36 us=39215   ccd_exclusive = DISABLED
2012-05-15 22:13:36 us=39228   tmp_dir = '/var/folders/6k/r4rml09s5x50_t3s2lq90w2m0000gn/T/'
2012-05-15 22:13:36 us=39242   push_ifconfig_defined = DISABLED
2012-05-15 22:13:36 us=39257   push_ifconfig_local = 0.0.0.0
2012-05-15 22:13:36 us=39272   push_ifconfig_remote_netmask = 0.0.0.0
2012-05-15 22:13:36 us=39285   enable_c2c = DISABLED
2012-05-15 22:13:36 us=39298   duplicate_cn = DISABLED
2012-05-15 22:13:36 us=39311   cf_max = 0
2012-05-15 22:13:36 us=39325   cf_per = 0
2012-05-15 22:13:36 us=39338   max_clients = 1024
2012-05-15 22:13:36 us=39351   max_routes_per_client = 256
2012-05-15 22:13:36 us=39364   auth_user_pass_verify_script = '[UNDEF]'
2012-05-15 22:13:36 us=39378   auth_user_pass_verify_script_via_file = DISABLED
2012-05-15 22:13:36 us=39405   ssl_flags = 0
2012-05-15 22:13:36 us=39419   port_share_host = '[UNDEF]'
2012-05-15 22:13:36 us=39432   port_share_port = 0
2012-05-15 22:13:36 us=39445   client = DISABLED
2012-05-15 22:13:36 us=39458   pull = DISABLED
2012-05-15 22:13:36 us=39472   auth_user_pass_file = '[UNDEF]'
2012-05-15 22:13:36 us=39490 OpenVPN 2.2.1 i386-apple-darwin10.7.1 [SSL] [LZO2] [PKCS11] [eurephia] built on May  2 2012
2012-05-15 22:13:36 us=39629 MANAGEMENT: TCP Socket listening on 127.0.0.1:1338
2012-05-15 22:13:36 us=40211 Need hold release from management interface, waiting...
2012-05-15 22:13:36 us=151246 MANAGEMENT: Client connected from 127.0.0.1:1338
2012-05-15 22:13:36 us=186701 MANAGEMENT: CMD 'pid'
2012-05-15 22:13:36 us=187063 MANAGEMENT: CMD 'state on'
2012-05-15 22:13:36 us=187196 MANAGEMENT: CMD 'state'
2012-05-15 22:13:36 us=187363 MANAGEMENT: CMD 'hold release'
2012-05-15 22:13:36 us=187806 NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
2012-05-15 22:13:36 *Tunnelblick: Established communication with OpenVPN
2012-05-15 22:13:36 us=271213 Diffie-Hellman initialized with 2048 bit key
2012-05-15 22:13:36 us=273556 WARNING: file 'server.key' is group or others accessible
2012-05-15 22:13:36 us=274387 TLS-Auth MTU parms [ L:1544 D:140 EF:40 EB:0 ET:0 EL:0 ]
2012-05-15 22:13:36 us=274529 Socket Buffers: R=[262140->65536] S=[131070->65536]
2012-05-15 22:13:36 us=274805 ROUTE default_gateway=192.168.178.1
2012-05-15 22:13:36 us=275280 TUN/TAP device /dev/tun0 opened
2012-05-15 22:13:36 us=275392 MANAGEMENT: >STATE:1337112816,ASSIGN_IP,,10.10.46.1,
2012-05-15 22:13:36 us=275658 /sbin/ifconfig tun0 delete
                                        ifconfig: ioctl (SIOCDIFADDR): Can't assign requested address
2012-05-15 22:13:36 us=289372 NOTE: Tried to delete pre-existing tun/tap instance -- No Problem if failure
2012-05-15 22:13:36 us=289562 /sbin/ifconfig tun0 10.10.46.1 10.10.46.2 mtu 1500 netmask 255.255.255.255 up
2012-05-15 22:13:36 us=298344 /Applications/Tunnelblick.app/Contents/Resources/client.up.tunnelblick.sh -m -w -d -atDASNGWrdasngw tun0 1500 1544 10.10.46.1 10.10.46.2 init
2012-05-15 22:13:38 *Tunnelblick client.up.tunnelblick.sh: No network configuration changes need to be made.
2012-05-15 22:13:38 *Tunnelblick client.up.tunnelblick.sh: Will NOT monitor for other network configuration changes.
2012-05-15 22:13:38 us=386030 MANAGEMENT: >STATE:1337112818,ADD_ROUTES,,,
2012-05-15 22:13:38 us=386347 /sbin/route add -net 10.10.46.0 10.10.46.2 255.255.255.0
                                        add net 10.10.46.0: gateway 10.10.46.2
2012-05-15 22:13:38 us=389217 Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:135 ET:0 EL:0 AF:3/1 ]
2012-05-15 22:13:38 us=389370 Listening for incoming TCP connection on [undef]:1194
2012-05-15 22:13:38 us=389470 TCPv4_SERVER link local (bound): [undef]:1194
2012-05-15 22:13:38 us=389548 TCPv4_SERVER link remote: [undef]
2012-05-15 22:13:38 us=389639 MULTI: multi_init called, r=256 v=256
2012-05-15 22:13:38 us=389760 IFCONFIG POOL: base=10.10.46.4 size=62
2012-05-15 22:13:38 us=389849 IFCONFIG POOL LIST
2012-05-15 22:13:38 us=389940 MULTI: TCP INIT maxclients=1020 maxevents=1024
2012-05-15 22:13:38 us=390088 Initialization Sequence Completed
2012-05-15 22:13:38 us=390376 MANAGEMENT: >STATE:1337112818,CONNECTED,SUCCESS,10.10.46.1,
2012-05-15 22:13:38 *Tunnelblick: Flushed the DNS cache
2012-05-15 22:13:43 us=31875 MULTI: multi_create_instance called
2012-05-15 22:13:43 us=32107 Re-using SSL/TLS context
2012-05-15 22:13:43 us=32252 LZO compression initialized
2012-05-15 22:13:43 us=32510 Control Channel MTU parms [ L:1544 D:140 EF:40 EB:0 ET:0 EL:0 ]
2012-05-15 22:13:43 us=32637 Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:135 ET:0 EL:0 AF:3/1 ]
2012-05-15 22:13:43 us=32790 Local Options String: 'V4,dev-type tun,link-mtu 1544,tun-mtu 1500,proto TCPv4_SERVER,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-server'
2012-05-15 22:13:43 us=32890 Expected Remote Options String: 'V4,dev-type tun,link-mtu 1544,tun-mtu 1500,proto TCPv4_CLIENT,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-client'
2012-05-15 22:13:43 us=33009 Local Options hash (VER=V4): 'c0103fa8'
2012-05-15 22:13:43 us=33112 Expected Remote Options hash (VER=V4): '69109d17'
2012-05-15 22:13:43 us=33948 TCP connection established with 192.168.178.18:57255
2012-05-15 22:13:43 us=34057 TCPv4_SERVER link local: [undef]
2012-05-15 22:13:43 us=34153 TCPv4_SERVER link remote: 192.168.178.18:57255
2012-05-15 22:13:44 us=34206 192.168.178.18:57255 TLS: Initial packet from 192.168.178.18:57255, sid=82a6f64e 02a662d0
2012-05-15 22:13:44 us=82525 192.168.178.18:57255 Connection reset, restarting [0]
2012-05-15 22:13:44 us=82701 192.168.178.18:57255 SIGUSR1[soft,connection-reset] received, client-instance restarting
2012-05-15 22:13:44 us=82879 TCP/UDP: Closing socket
2012-05-15 22:13:44 us=89585 MULTI: multi_create_instance called
2012-05-15 22:13:44 us=89750 Re-using SSL/TLS context
2012-05-15 22:13:44 us=89840 LZO compression initialized
2012-05-15 22:13:44 us=89992 Control Channel MTU parms [ L:1544 D:140 EF:40 EB:0 ET:0 EL:0 ]
2012-05-15 22:13:44 us=90083 Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:135 ET:0 EL:0 AF:3/1 ]
2012-05-15 22:13:44 us=90195 Local Options String: 'V4,dev-type tun,link-mtu 1544,tun-mtu 1500,proto TCPv4_SERVER,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-server'
2012-05-15 22:13:44 us=90275 Expected Remote Options String: 'V4,dev-type tun,link-mtu 1544,tun-mtu 1500,proto TCPv4_CLIENT,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-client'
2012-05-15 22:13:44 us=90365 Local Options hash (VER=V4): 'c0103fa8'
2012-05-15 22:13:44 us=90450 Expected Remote Options hash (VER=V4): '69109d17'
2012-05-15 22:13:44 us=90545 TCP connection established with 192.168.178.18:57256
2012-05-15 22:13:44 us=90630 TCPv4_SERVER link local: [undef]
2012-05-15 22:13:44 us=90711 TCPv4_SERVER link remote: 192.168.178.18:57256
2012-05-15 22:13:45 us=89924 192.168.178.18:57256 TLS: Initial packet from 192.168.178.18:57256, sid=17bf6baa 2d4a24f0
2012-05-15 22:13:45 us=135364 192.168.178.18:57256 Connection reset, restarting [0]
2012-05-15 22:13:45 us=135567 192.168.178.18:57256 SIGUSR1[soft,connection-reset] received, client-instance restarting
2012-05-15 22:13:45 us=135722 TCP/UDP: Closing socket
2012-05-15 22:13:45 us=162029 MULTI: multi_create_instance called
2012-05-15 22:13:45 us=162452 Re-using SSL/TLS context
2012-05-15 22:13:45 us=162556 LZO compression initialized
2012-05-15 22:13:45 us=162857 Control Channel MTU parms [ L:1544 D:140 EF:40 EB:0 ET:0 EL:0 ]
2012-05-15 22:13:45 us=162965 Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:135 ET:0 EL:0 AF:3/1 ]
2012-05-15 22:13:45 us=163096 Local Options String: 'V4,dev-type tun,link-mtu 1544,tun-mtu 1500,proto TCPv4_SERVER,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-server'
2012-05-15 22:13:45 us=163176 Expected Remote Options String: 'V4,dev-type tun,link-mtu 1544,tun-mtu 1500,proto TCPv4_CLIENT,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-client'
2012-05-15 22:13:45 us=163262 Local Options hash (VER=V4): 'c0103fa8'
2012-05-15 22:13:45 us=163347 Expected Remote Options hash (VER=V4): '69109d17'
2012-05-15 22:13:45 us=163442 TCP connection established with 192.168.178.18:57257
2012-05-15 22:13:45 us=163539 TCPv4_SERVER link local: [undef]
2012-05-15 22:13:45 us=163835 TCPv4_SERVER link remote: 192.168.178.18:57257
2012-05-15 22:13:46 us=162734 192.168.178.18:57257 TLS: Initial packet from 192.168.178.18:57257, sid=5a713988 0286f71c
2012-05-15 22:13:46 us=212099 192.168.178.18:57257 Connection reset, restarting [0]
2012-05-15 22:13:46 us=212542 192.168.178.18:57257 SIGUSR1[soft,connection-reset] received, client-instance restarting
2012-05-15 22:13:46 us=212731 TCP/UDP: Closing socket
2012-05-15 22:13:46 us=254158 MULTI: multi_create_instance called
2012-05-15 22:13:46 us=254583 Re-using SSL/TLS context
2012-05-15 22:13:46 us=254675 LZO compression initialized
2012-05-15 22:13:46 us=255324 Control Channel MTU parms [ L:1544 D:140 EF:40 EB:0 ET:0 EL:0 ]
2012-05-15 22:13:46 us=255453 Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:135 ET:0 EL:0 AF:3/1 ]
2012-05-15 22:13:46 us=258114 Local Options String: 'V4,dev-type tun,link-mtu 1544,tun-mtu 1500,proto TCPv4_SERVER,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-server'
2012-05-15 22:13:46 us=258223 Expected Remote Options String: 'V4,dev-type tun,link-mtu 1544,tun-mtu 1500,proto TCPv4_CLIENT,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-client'
2012-05-15 22:13:46 us=258385 Local Options hash (VER=V4): 'c0103fa8'
2012-05-15 22:13:46 us=258621 Expected Remote Options hash (VER=V4): '69109d17'
2012-05-15 22:13:46 us=258724 TCP connection established with 192.168.178.18:57258
2012-05-15 22:13:46 us=259359 TCPv4_SERVER link local: [undef]
2012-05-15 22:13:46 us=259447 TCPv4_SERVER link remote: 192.168.178.18:57258
2012-05-15 22:13:46 us=652441 192.168.178.18:57258 Connection reset, restarting [0]
2012-05-15 22:13:46 us=652631 192.168.178.18:57258 SIGUSR1[soft,connection-reset] received, client-instance restarting
2012-05-15 22:13:46 us=652817 TCP/UDP: Closing socket
2012-05-15 22:13:50 *Tunnelblick: Disconnecting; 'disconnect' button pressed
2012-05-15 22:13:50 us=369157 TCP/UDP: Closing socket
2012-05-15 22:13:50 us=369344 /sbin/route delete -net 10.10.46.0 10.10.46.2 255.255.255.0
                                        delete net 10.10.46.0: gateway 10.10.46.2
2012-05-15 22:13:50 us=372743 Closing TUN/TAP interface
2012-05-15 22:13:50 us=373168 /Applications/Tunnelblick.app/Contents/Resources/client.down.tunnelblick.sh -m -w -d -atDASNGWrdasngw tun0 1500 1544 10.10.46.1 10.10.46.2 init
2012-05-15 22:13:51 *Tunnelblick client.down.tunnelblick.sh: WARNING: No existing OpenVPN DNS configuration found; not tearing down anything; exiting.
2012-05-15 22:13:51 us=410242 SIGTERM[hard,] received, process exiting
2012-05-15 22:13:51 us=410409 MANAGEMENT: >STATE:1337112831,EXITING,SIGTERM,,
2012-05-15 22:13:51 *Tunnelblick: Flushed the DNS cache

CLIENT

Code: Select all

2012-05-15 22:13:42 *Tunnelblick: OS X 10.7.4; Tunnelblick 3.2.6 (build 2891.3007) Unsigned
2012-05-15 22:13:42 *Tunnelblick: Attempting connection with client1; Set nameserver = 1; monitoring connection
2012-05-15 22:13:42 *Tunnelblick: /Applications/Tunnelblick.app/Contents/Resources/openvpnstart start client1.ovpn 1338 1 0 0 0 49 -atDASNGWrdasngw 
2012-05-15 22:13:42 us=899560 Current Parameter Settings:
2012-05-15 22:13:42 us=899722   config = '/Users/michael/Library/Application Support/Tunnelblick/Configurations/client1.ovpn'
2012-05-15 22:13:42 us=899733   mode = 0
2012-05-15 22:13:42 us=899742   show_ciphers = DISABLED
2012-05-15 22:13:42 us=899750   show_digests = DISABLED
2012-05-15 22:13:42 us=899759   show_engines = DISABLED
2012-05-15 22:13:42 us=899767   genkey = DISABLED
2012-05-15 22:13:42 us=899778   key_pass_file = '[UNDEF]'
2012-05-15 22:13:42 us=899787   show_tls_ciphers = DISABLED
2012-05-15 22:13:42 us=899796 Connection profiles [default]:
2012-05-15 22:13:42 us=899804   proto = tcp-client
2012-05-15 22:13:42 us=899813   local = '[UNDEF]'
2012-05-15 22:13:42 us=899822   local_port = 0
2012-05-15 22:13:42 us=899830   remote = '192.168.178.10'
2012-05-15 22:13:42 us=899839   remote_port = 1194
2012-05-15 22:13:42 us=899847   remote_float = DISABLED
2012-05-15 22:13:42 us=899855   bind_defined = DISABLED
2012-05-15 22:13:42 us=899864   bind_local = DISABLED
2012-05-15 22:13:42 us=899872   connect_retry_seconds = 5
2012-05-15 22:13:42 us=899881   connect_timeout = 10
2012-05-15 22:13:42 us=899890   connect_retry_max = 0
2012-05-15 22:13:42 us=899898   socks_proxy_server = '[UNDEF]'
2012-05-15 22:13:42 us=899907   socks_proxy_port = 0
2012-05-15 22:13:42 us=899915   socks_proxy_retry = DISABLED
2012-05-15 22:13:42 us=899924 Connection profiles END
2012-05-15 22:13:42 us=899932   remote_random = DISABLED
2012-05-15 22:13:42 us=899941   ipchange = '[UNDEF]'
2012-05-15 22:13:42 us=899949   dev = 'tun'
2012-05-15 22:13:42 us=899958   dev_type = '[UNDEF]'
2012-05-15 22:13:42 us=899966   dev_node = '[UNDEF]'
2012-05-15 22:13:42 us=899975   lladdr = '[UNDEF]'
2012-05-15 22:13:42 us=899983   topology = 1
2012-05-15 22:13:42 us=899991   tun_ipv6 = DISABLED
2012-05-15 22:13:42 us=900000   ifconfig_local = '[UNDEF]'
2012-05-15 22:13:42 us=900008   ifconfig_remote_netmask = '[UNDEF]'
2012-05-15 22:13:42 us=900017   ifconfig_noexec = DISABLED
2012-05-15 22:13:42 us=900025   ifconfig_nowarn = DISABLED
2012-05-15 22:13:42 us=900034   shaper = 0
2012-05-15 22:13:42 us=900042   tun_mtu = 1500
2012-05-15 22:13:42 us=900051   tun_mtu_defined = ENABLED
2012-05-15 22:13:42 us=900059   link_mtu = 1500
2012-05-15 22:13:42 us=900067   link_mtu_defined = DISABLED
2012-05-15 22:13:42 us=900076   tun_mtu_extra = 0
2012-05-15 22:13:42 us=900084   tun_mtu_extra_defined = DISABLED
2012-05-15 22:13:42 us=900093   fragment = 0
2012-05-15 22:13:42 us=900101   mtu_discover_type = -1
2012-05-15 22:13:42 us=900110   mtu_test = 0
2012-05-15 22:13:42 us=900122   mlock = DISABLED
2012-05-15 22:13:42 us=900131   keepalive_ping = 0
2012-05-15 22:13:42 us=900139   keepalive_timeout = 0
2012-05-15 22:13:42 us=900148   inactivity_timeout = 0
2012-05-15 22:13:42 us=900156   ping_send_timeout = 0
2012-05-15 22:13:42 us=900165   ping_rec_timeout = 0
2012-05-15 22:13:42 us=900173   ping_rec_timeout_action = 0
2012-05-15 22:13:42 us=900181   ping_timer_remote = DISABLED
2012-05-15 22:13:42 us=900190   remap_sigusr1 = 0
2012-05-15 22:13:42 us=900198   explicit_exit_notification = 0
2012-05-15 22:13:42 us=900207   persist_tun = ENABLED
2012-05-15 22:13:42 us=900215   persist_local_ip = DISABLED
2012-05-15 22:13:42 us=900224   persist_remote_ip = DISABLED
2012-05-15 22:13:42 us=900232   persist_key = ENABLED
2012-05-15 22:13:42 us=900241   mssfix = 1450
2012-05-15 22:13:42 us=900249   passtos = DISABLED
2012-05-15 22:13:42 us=900258   resolve_retry_seconds = 1000000000
2012-05-15 22:13:42 us=900266   username = '[UNDEF]'
2012-05-15 22:13:42 us=900275   groupname = '[UNDEF]'
2012-05-15 22:13:42 us=900283   chroot_dir = '[UNDEF]'
2012-05-15 22:13:42 us=900292   cd_dir = '/Users/michael/Library/Application Support/Tunnelblick/Configurations'
2012-05-15 22:13:42 us=900309   writepid = '[UNDEF]'
2012-05-15 22:13:42 us=900318   up_script = '/Applications/Tunnelblick.app/Contents/Resources/client.up.tunnelblick.sh -m -w -d -atDASNGWrdasngw'
2012-05-15 22:13:42 us=900327   down_script = '/Applications/Tunnelblick.app/Contents/Resources/client.down.tunnelblick.sh -m -w -d -atDASNGWrdasngw'
2012-05-15 22:13:42 us=900335   down_pre = DISABLED
2012-05-15 22:13:42 us=900344   up_restart = ENABLED
2012-05-15 22:13:42 us=900352   up_delay = DISABLED
2012-05-15 22:13:42 us=900363   daemon = ENABLED
2012-05-15 22:13:42 us=900372   inetd = 0
2012-05-15 22:13:42 us=900380   log = ENABLED
2012-05-15 22:13:42 us=900395   suppress_timestamps = DISABLED
2012-05-15 22:13:42 us=900404   nice = 0
2012-05-15 22:13:42 us=900415   verbosity = 4
2012-05-15 22:13:42 us=900424   mute = 0
2012-05-15 22:13:42 us=900433   gremlin = 0
2012-05-15 22:13:42 us=900441   status_file = '[UNDEF]'
2012-05-15 22:13:42 us=900450   status_file_version = 1
2012-05-15 22:13:42 us=900458   status_file_update_freq = 60
2012-05-15 22:13:42 us=900481   occ = ENABLED
2012-05-15 22:13:42 us=900490   rcvbuf = 65536
2012-05-15 22:13:42 us=900499   sndbuf = 65536
2012-05-15 22:13:42 us=900507   sockflags = 0
2012-05-15 22:13:42 us=900516   fast_io = DISABLED
2012-05-15 22:13:42 us=900524   lzo = 7
2012-05-15 22:13:42 us=900533   route_script = '[UNDEF]'
2012-05-15 22:13:42 us=900542   route_default_gateway = '[UNDEF]'
2012-05-15 22:13:42 us=900551   route_default_metric = 0
2012-05-15 22:13:42 us=900559   route_noexec = DISABLED
2012-05-15 22:13:42 us=900568   route_delay = 0
2012-05-15 22:13:42 us=900576   route_delay_window = 30
2012-05-15 22:13:42 us=900585   route_delay_defined = DISABLED
2012-05-15 22:13:42 us=900593   route_nopull = DISABLED
2012-05-15 22:13:42 us=900602   route_gateway_via_dhcp = DISABLED
2012-05-15 22:13:42 us=900611   max_routes = 100
2012-05-15 22:13:42 us=900620   allow_pull_fqdn = DISABLED
2012-05-15 22:13:42 us=900628   management_addr = '127.0.0.1'
2012-05-15 22:13:42 us=900637   management_port = 1338
2012-05-15 22:13:42 us=900646   management_user_pass = '[UNDEF]'
2012-05-15 22:13:42 us=900655   management_log_history_cache = 250
2012-05-15 22:13:42 us=900664   management_echo_buffer_size = 100
2012-05-15 22:13:42 us=900673   management_write_peer_info_file = '[UNDEF]'
2012-05-15 22:13:42 us=900682   management_client_user = '[UNDEF]'
2012-05-15 22:13:42 us=900691   management_client_group = '[UNDEF]'
2012-05-15 22:13:42 us=900700   management_flags = 6
2012-05-15 22:13:42 us=900709   shared_secret_file = '[UNDEF]'
2012-05-15 22:13:42 us=900718   key_direction = 0
2012-05-15 22:13:42 us=900727   ciphername_defined = ENABLED
2012-05-15 22:13:42 us=900736   ciphername = 'BF-CBC'
2012-05-15 22:13:42 us=900744   authname_defined = ENABLED
2012-05-15 22:13:42 us=900753   authname = 'SHA1'
2012-05-15 22:13:42 us=900762   prng_hash = 'SHA1'
2012-05-15 22:13:42 us=900771   prng_nonce_secret_len = 16
2012-05-15 22:13:42 us=900779   keysize = 0
2012-05-15 22:13:42 us=900788   engine = DISABLED
2012-05-15 22:13:42 us=900797   replay = ENABLED
2012-05-15 22:13:42 us=900806   mute_replay_warnings = DISABLED
2012-05-15 22:13:42 us=900814   replay_window = 64
2012-05-15 22:13:42 us=900823   replay_time = 15
2012-05-15 22:13:42 us=900832   packet_id_file = '[UNDEF]'
2012-05-15 22:13:42 us=900840   use_iv = ENABLED
2012-05-15 22:13:42 us=900849   test_crypto = DISABLED
2012-05-15 22:13:42 us=900858   tls_server = DISABLED
2012-05-15 22:13:42 us=900869   tls_client = ENABLED
2012-05-15 22:13:42 us=900878   key_method = 2
2012-05-15 22:13:42 us=900887   ca_file = 'ca.crt'
2012-05-15 22:13:42 us=900896   ca_path = '[UNDEF]'
2012-05-15 22:13:42 us=900913   dh_file = '[UNDEF]'
2012-05-15 22:13:42 us=900922   cert_file = 'client1.crt'
2012-05-15 22:13:42 us=900931   priv_key_file = 'client1.key'
2012-05-15 22:13:42 us=900939   pkcs12_file = '[UNDEF]'
2012-05-15 22:13:42 us=900948   cipher_list = '[UNDEF]'
2012-05-15 22:13:42 us=900957   tls_verify = '[UNDEF]'
2012-05-15 22:13:42 us=900965   tls_export_cert = '[UNDEF]'
2012-05-15 22:13:42 us=900974   tls_remote = '[UNDEF]'
2012-05-15 22:13:42 us=900983   crl_file = '[UNDEF]'
2012-05-15 22:13:42 us=900991   ns_cert_type = 0
2012-05-15 22:13:42 us=901000   remote_cert_ku[i] = 0
2012-05-15 22:13:42 us=901009   remote_cert_ku[i] = 0
2012-05-15 22:13:42 us=901018   remote_cert_ku[i] = 0
2012-05-15 22:13:42 us=901026   remote_cert_ku[i] = 0
2012-05-15 22:13:42 us=901035   remote_cert_ku[i] = 0
2012-05-15 22:13:42 us=901044   remote_cert_ku[i] = 0
2012-05-15 22:13:42 us=901052   remote_cert_ku[i] = 0
2012-05-15 22:13:42 us=901061   remote_cert_ku[i] = 0
2012-05-15 22:13:42 us=901070   remote_cert_ku[i] = 0
2012-05-15 22:13:42 us=901078   remote_cert_ku[i] = 0
2012-05-15 22:13:42 us=901087   remote_cert_ku[i] = 0
2012-05-15 22:13:42 us=901096   remote_cert_ku[i] = 0
2012-05-15 22:13:42 us=901104   remote_cert_ku[i] = 0
2012-05-15 22:13:42 us=901113   remote_cert_ku[i] = 0
2012-05-15 22:13:42 us=901122   remote_cert_ku[i] = 0
2012-05-15 22:13:42 us=901130   remote_cert_ku[i] = 0
2012-05-15 22:13:42 us=901139   remote_cert_eku = '[UNDEF]'
2012-05-15 22:13:42 us=901148   tls_timeout = 2
2012-05-15 22:13:42 us=901156   renegotiate_bytes = 0
2012-05-15 22:13:42 us=901165   renegotiate_packets = 0
2012-05-15 22:13:42 us=901174   renegotiate_seconds = 3600
2012-05-15 22:13:42 us=901183   handshake_window = 60
2012-05-15 22:13:42 us=901192   transition_window = 3600
2012-05-15 22:13:42 us=901200   single_session = DISABLED
2012-05-15 22:13:42 us=901209   push_peer_info = DISABLED
2012-05-15 22:13:42 us=901218   tls_exit = DISABLED
2012-05-15 22:13:42 us=901227   tls_auth_file = '[UNDEF]'
2012-05-15 22:13:42 us=901236   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:42 us=901245   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:42 us=901254   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:42 us=901263   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:42 us=901271   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:42 us=901280   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:42 us=901289   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:42 us=901298   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:42 us=901307   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:42 us=901316   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:42 us=901325   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:42 us=901333   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:42 us=901342   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:42 us=901351   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:42 us=901360   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:42 us=901369   pkcs11_protected_authentication = DISABLED
2012-05-15 22:13:42 us=901378   pkcs11_private_mode = 00000000
2012-05-15 22:13:42 us=901387   pkcs11_private_mode = 00000000
2012-05-15 22:13:42 us=901396   pkcs11_private_mode = 00000000
2012-05-15 22:13:42 us=901404   pkcs11_private_mode = 00000000
2012-05-15 22:13:42 us=901413   pkcs11_private_mode = 00000000
2012-05-15 22:13:42 us=901422   pkcs11_private_mode = 00000000
2012-05-15 22:13:42 us=901431   pkcs11_private_mode = 00000000
2012-05-15 22:13:42 us=901440   pkcs11_private_mode = 00000000
2012-05-15 22:13:42 us=901449   pkcs11_private_mode = 00000000
2012-05-15 22:13:42 us=901465   pkcs11_private_mode = 00000000
2012-05-15 22:13:42 us=901474   pkcs11_private_mode = 00000000
2012-05-15 22:13:42 us=901483   pkcs11_private_mode = 00000000
2012-05-15 22:13:42 us=901492   pkcs11_private_mode = 00000000
2012-05-15 22:13:42 us=901501   pkcs11_private_mode = 00000000
2012-05-15 22:13:42 us=901510   pkcs11_private_mode = 00000000
2012-05-15 22:13:42 us=901519   pkcs11_private_mode = 00000000
2012-05-15 22:13:42 us=901527   pkcs11_cert_private = DISABLED
2012-05-15 22:13:42 us=901536   pkcs11_cert_private = DISABLED
2012-05-15 22:13:42 us=901545   pkcs11_cert_private = DISABLED
2012-05-15 22:13:42 us=901554   pkcs11_cert_private = DISABLED
2012-05-15 22:13:42 us=901563   pkcs11_cert_private = DISABLED
2012-05-15 22:13:42 us=901571   pkcs11_cert_private = DISABLED
2012-05-15 22:13:42 us=901580   pkcs11_cert_private = DISABLED
2012-05-15 22:13:42 us=901589   pkcs11_cert_private = DISABLED
2012-05-15 22:13:42 us=901598   pkcs11_cert_private = DISABLED
2012-05-15 22:13:42 us=901607   pkcs11_cert_private = DISABLED
2012-05-15 22:13:42 us=901615   pkcs11_cert_private = DISABLED
2012-05-15 22:13:42 us=901624   pkcs11_cert_private = DISABLED
2012-05-15 22:13:42 us=901633   pkcs11_cert_private = DISABLED
2012-05-15 22:13:42 us=901642   pkcs11_cert_private = DISABLED
2012-05-15 22:13:42 us=901651   pkcs11_cert_private = DISABLED
2012-05-15 22:13:42 us=901659   pkcs11_cert_private = DISABLED
2012-05-15 22:13:42 us=901668   pkcs11_pin_cache_period = -1
2012-05-15 22:13:42 us=901677   pkcs11_id = '[UNDEF]'
2012-05-15 22:13:42 us=901686   pkcs11_id_management = DISABLED
2012-05-15 22:13:42 us=901712   server_network = 0.0.0.0
2012-05-15 22:13:42 us=901723   server_netmask = 0.0.0.0
2012-05-15 22:13:42 us=901733   server_bridge_ip = 0.0.0.0
2012-05-15 22:13:42 us=901743   server_bridge_netmask = 0.0.0.0
2012-05-15 22:13:42 us=901753   server_bridge_pool_start = 0.0.0.0
2012-05-15 22:13:42 us=901763   server_bridge_pool_end = 0.0.0.0
2012-05-15 22:13:42 us=901772   ifconfig_pool_defined = DISABLED
2012-05-15 22:13:42 us=901781   ifconfig_pool_start = 0.0.0.0
2012-05-15 22:13:42 us=901791   ifconfig_pool_end = 0.0.0.0
2012-05-15 22:13:42 us=901801   ifconfig_pool_netmask = 0.0.0.0
2012-05-15 22:13:42 us=901810   ifconfig_pool_persist_filename = '[UNDEF]'
2012-05-15 22:13:42 us=901819   ifconfig_pool_persist_refresh_freq = 600
2012-05-15 22:13:42 us=901827   n_bcast_buf = 256
2012-05-15 22:13:42 us=901836   tcp_queue_limit = 64
2012-05-15 22:13:42 us=901845   real_hash_size = 256
2012-05-15 22:13:42 us=901854   virtual_hash_size = 256
2012-05-15 22:13:42 us=901863   client_connect_script = '[UNDEF]'
2012-05-15 22:13:42 us=901872   learn_address_script = '[UNDEF]'
2012-05-15 22:13:42 us=901881   client_disconnect_script = '[UNDEF]'
2012-05-15 22:13:42 us=901890   client_config_dir = '[UNDEF]'
2012-05-15 22:13:42 us=901899   ccd_exclusive = DISABLED
2012-05-15 22:13:42 us=901908   tmp_dir = '/var/folders/mn/1r1wj7k13nzdhpss1tb7y_j00000gn/T/'
2012-05-15 22:13:42 us=901917   push_ifconfig_defined = DISABLED
2012-05-15 22:13:42 us=901926   push_ifconfig_local = 0.0.0.0
2012-05-15 22:13:42 us=901936   push_ifconfig_remote_netmask = 0.0.0.0
2012-05-15 22:13:42 us=901945   enable_c2c = DISABLED
2012-05-15 22:13:42 us=901954   duplicate_cn = DISABLED
2012-05-15 22:13:42 us=901963   cf_max = 0
2012-05-15 22:13:42 us=901971   cf_per = 0
2012-05-15 22:13:42 us=901980   max_clients = 1024
2012-05-15 22:13:42 us=901989   max_routes_per_client = 256
2012-05-15 22:13:42 us=901997   auth_user_pass_verify_script = '[UNDEF]'
2012-05-15 22:13:42 us=902006   auth_user_pass_verify_script_via_file = DISABLED
2012-05-15 22:13:42 us=902015   ssl_flags = 0
2012-05-15 22:13:42 us=902024   port_share_host = '[UNDEF]'
2012-05-15 22:13:42 us=902041   port_share_port = 0
2012-05-15 22:13:42 us=902050   client = ENABLED
2012-05-15 22:13:42 us=902058   pull = ENABLED
2012-05-15 22:13:42 us=902067   auth_user_pass_file = '[UNDEF]'
2012-05-15 22:13:42 us=902080 OpenVPN 2.2.1 i386-apple-darwin10.7.1 [SSL] [LZO2] [PKCS11] [eurephia] built on May  2 2012
2012-05-15 22:13:42 us=902187 MANAGEMENT: TCP Socket listening on 127.0.0.1:1338
2012-05-15 22:13:42 us=902538 Need hold release from management interface, waiting...
2012-05-15 22:13:42 *Tunnelblick: openvpnstart: /Applications/Tunnelblick.app/Contents/Resources/openvpn/openvpn-2.2.1/openvpn --cd /Users/michael/Library/Application Support/Tunnelblick/Configurations --daemon --management 127.0.0.1 1338 --config /Users/michael/Library/Application Support/Tunnelblick/Configurations/client1.ovpn --log /Library/Application Support/Tunnelblick/Logs/-SUsers-Smichael-SLibrary-SApplication Support-STunnelblick-SConfigurations-Sclient1.ovpn.1_0_0_0_49.1338.openvpn.log --management-query-passwords --management-hold --script-security 2 --up /Applications/Tunnelblick.app/Contents/Resources/client.up.tunnelblick.sh -m -w -d -atDASNGWrdasngw --down /Applications/Tunnelblick.app/Contents/Resources/client.down.tunnelblick.sh -m -w -d -atDASNGWrdasngw --up-restart
2012-05-15 22:13:43 *Tunnelblick: openvpnstart message: Loading tun.kext
2012-05-15 22:13:43 us=18950 MANAGEMENT: Client connected from 127.0.0.1:1338
2012-05-15 22:13:43 us=30339 MANAGEMENT: CMD 'pid'
2012-05-15 22:13:43 us=30587 MANAGEMENT: CMD 'state on'
2012-05-15 22:13:43 us=30683 MANAGEMENT: CMD 'state'
2012-05-15 22:13:43 us=30809 MANAGEMENT: CMD 'hold release'
2012-05-15 22:13:43 *Tunnelblick: Established communication with OpenVPN
2012-05-15 22:13:43 us=31127 WARNING: No server certificate verification method has been enabled.  See http://openvpn.net/howto.html#mitm for more info.
2012-05-15 22:13:43 us=31184 NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
2012-05-15 22:13:43 us=31998 WARNING: file 'client1.key' is group or others accessible
2012-05-15 22:13:43 us=32463 LZO compression initialized
2012-05-15 22:13:43 us=32592 Control Channel MTU parms [ L:1544 D:140 EF:40 EB:0 ET:0 EL:0 ]
2012-05-15 22:13:43 us=32689 Socket Buffers: R=[262140->65536] S=[131070->65536]
2012-05-15 22:13:43 us=32748 Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:135 ET:0 EL:0 AF:3/1 ]
2012-05-15 22:13:43 us=32809 Local Options String: 'V4,dev-type tun,link-mtu 1544,tun-mtu 1500,proto TCPv4_CLIENT,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-client'
2012-05-15 22:13:43 us=32861 Expected Remote Options String: 'V4,dev-type tun,link-mtu 1544,tun-mtu 1500,proto TCPv4_SERVER,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-server'
2012-05-15 22:13:43 us=34316 Local Options hash (VER=V4): '69109d17'
2012-05-15 22:13:43 us=34375 Expected Remote Options hash (VER=V4): 'c0103fa8'
2012-05-15 22:13:43 us=34439 Attempting to establish TCP connection with 192.168.178.10:1194 [nonblock]
2012-05-15 22:13:43 us=34504 MANAGEMENT: >STATE:1337112823,TCP_CONNECT,,,
2012-05-15 22:13:44 us=35675 TCP connection established with 192.168.178.10:1194
2012-05-15 22:13:44 us=35862 TCPv4_CLIENT link local: [undef]
2012-05-15 22:13:44 us=35969 TCPv4_CLIENT link remote: 192.168.178.10:1194
2012-05-15 22:13:44 us=36496 MANAGEMENT: >STATE:1337112824,WAIT,,,
2012-05-15 22:13:44 us=37637 MANAGEMENT: >STATE:1337112824,AUTH,,,
2012-05-15 22:13:44 us=37783 TLS: Initial packet from 192.168.178.10:1194, sid=b559972c beac9110
2012-05-15 22:13:44 us=84884 VERIFY ERROR: depth=0, error=self signed certificate: /C=NL/L=Amsterdam/O=domain/CN=vpn.domain.tld/emailAddress=client1@domain.tld
2012-05-15 22:13:44 us=85076 TLS_ERROR: BIO read tls_read_plaintext error: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
2012-05-15 22:13:44 us=85132 TLS Error: TLS object -> incoming plaintext read error
2012-05-15 22:13:44 us=85183 TLS Error: TLS handshake failed
2012-05-15 22:13:44 us=85266 Fatal TLS error (check_tls_errors_co), restarting
2012-05-15 22:13:44 us=85338 TCP/UDP: Closing socket
2012-05-15 22:13:44 us=85411 SIGUSR1[soft,tls-error] received, process restarting
2012-05-15 22:13:44 us=85466 MANAGEMENT: >STATE:1337112824,RECONNECTING,tls-error,,
2012-05-15 22:13:44 us=89997 MANAGEMENT: CMD 'hold release'
2012-05-15 22:13:44 us=90147 WARNING: No server certificate verification method has been enabled.  See http://openvpn.net/howto.html#mitm for more info.
2012-05-15 22:13:44 us=90224 NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
2012-05-15 22:13:44 us=90287 Re-using SSL/TLS context
2012-05-15 22:13:44 us=90341 LZO compression initialized
2012-05-15 22:13:44 us=90453 Control Channel MTU parms [ L:1544 D:140 EF:40 EB:0 ET:0 EL:0 ]
2012-05-15 22:13:44 us=90527 Socket Buffers: R=[262140->65536] S=[131070->65536]
2012-05-15 22:13:44 us=90586 Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:135 ET:0 EL:0 AF:3/1 ]
2012-05-15 22:13:44 us=90646 Local Options String: 'V4,dev-type tun,link-mtu 1544,tun-mtu 1500,proto TCPv4_CLIENT,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-client'
2012-05-15 22:13:44 us=90697 Expected Remote Options String: 'V4,dev-type tun,link-mtu 1544,tun-mtu 1500,proto TCPv4_SERVER,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-server'
2012-05-15 22:13:44 us=90753 Local Options hash (VER=V4): '69109d17'
2012-05-15 22:13:44 us=90809 Expected Remote Options hash (VER=V4): 'c0103fa8'
2012-05-15 22:13:44 us=90865 Attempting to establish TCP connection with 192.168.178.10:1194 [nonblock]
2012-05-15 22:13:44 us=90917 MANAGEMENT: >STATE:1337112824,TCP_CONNECT,,,
2012-05-15 22:13:45 us=92063 TCP connection established with 192.168.178.10:1194
2012-05-15 22:13:45 us=92238 TCPv4_CLIENT link local: [undef]
2012-05-15 22:13:45 us=92343 TCPv4_CLIENT link remote: 192.168.178.10:1194
2012-05-15 22:13:45 us=92463 MANAGEMENT: >STATE:1337112825,WAIT,,,
2012-05-15 22:13:45 us=93409 MANAGEMENT: >STATE:1337112825,AUTH,,,
2012-05-15 22:13:45 us=93583 TLS: Initial packet from 192.168.178.10:1194, sid=6f6c0ff9 19cbcb52
2012-05-15 22:13:45 us=137799 VERIFY ERROR: depth=0, error=self signed certificate: /C=NL/L=Amsterdam/O=domain/CN=vpn.domain.tld/emailAddress=client1@domain.tld
2012-05-15 22:13:45 us=137967 TLS_ERROR: BIO read tls_read_plaintext error: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
2012-05-15 22:13:45 us=138067 TLS Error: TLS object -> incoming plaintext read error
2012-05-15 22:13:45 us=138123 TLS Error: TLS handshake failed
2012-05-15 22:13:45 us=138199 Fatal TLS error (check_tls_errors_co), restarting
2012-05-15 22:13:45 us=138283 TCP/UDP: Closing socket
2012-05-15 22:13:45 us=138356 SIGUSR1[soft,tls-error] received, process restarting
2012-05-15 22:13:45 us=138420 MANAGEMENT: >STATE:1337112825,RECONNECTING,tls-error,,
2012-05-15 22:13:45 us=163849 MANAGEMENT: CMD 'hold release'
2012-05-15 22:13:45 us=163972 WARNING: No server certificate verification method has been enabled.  See http://openvpn.net/howto.html#mitm for more info.
2012-05-15 22:13:45 us=164027 NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
2012-05-15 22:13:45 us=164085 Re-using SSL/TLS context
2012-05-15 22:13:45 us=164140 LZO compression initialized
2012-05-15 22:13:45 us=164222 Control Channel MTU parms [ L:1544 D:140 EF:40 EB:0 ET:0 EL:0 ]
2012-05-15 22:13:45 us=164301 Socket Buffers: R=[262140->65536] S=[131070->65536]
2012-05-15 22:13:45 us=164360 Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:135 ET:0 EL:0 AF:3/1 ]
2012-05-15 22:13:45 us=164422 Local Options String: 'V4,dev-type tun,link-mtu 1544,tun-mtu 1500,proto TCPv4_CLIENT,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-client'
2012-05-15 22:13:45 us=164473 Expected Remote Options String: 'V4,dev-type tun,link-mtu 1544,tun-mtu 1500,proto TCPv4_SERVER,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-server'
2012-05-15 22:13:45 us=164530 Local Options hash (VER=V4): '69109d17'
2012-05-15 22:13:45 us=164585 Expected Remote Options hash (VER=V4): 'c0103fa8'
2012-05-15 22:13:45 us=164641 Attempting to establish TCP connection with 192.168.178.10:1194 [nonblock]
2012-05-15 22:13:45 us=164694 MANAGEMENT: >STATE:1337112825,TCP_CONNECT,,,
2012-05-15 22:13:46 us=164978 TCP connection established with 192.168.178.10:1194
2012-05-15 22:13:46 us=165158 TCPv4_CLIENT link local: [undef]
2012-05-15 22:13:46 us=165264 TCPv4_CLIENT link remote: 192.168.178.10:1194
2012-05-15 22:13:46 us=165383 MANAGEMENT: >STATE:1337112826,WAIT,,,
2012-05-15 22:13:46 us=166241 MANAGEMENT: >STATE:1337112826,AUTH,,,
2012-05-15 22:13:46 us=166390 TLS: Initial packet from 192.168.178.10:1194, sid=cba8be2d 8087b91c
2012-05-15 22:13:46 us=210753 VERIFY ERROR: depth=0, error=self signed certificate: /C=NL/L=Amsterdam/O=domain/CN=vpn.domain.tld/emailAddress=client1@domain.tld
2012-05-15 22:13:46 us=212739 TLS_ERROR: BIO read tls_read_plaintext error: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
2012-05-15 22:13:46 us=214103 TLS Error: TLS object -> incoming plaintext read error
2012-05-15 22:13:46 us=214695 TLS Error: TLS handshake failed
2012-05-15 22:13:46 us=214881 Fatal TLS error (check_tls_errors_co), restarting
2012-05-15 22:13:46 us=214960 TCP/UDP: Closing socket
2012-05-15 22:13:46 us=215041 SIGUSR1[soft,tls-error] received, process restarting
2012-05-15 22:13:46 us=215096 MANAGEMENT: >STATE:1337112826,RECONNECTING,tls-error,,
2012-05-15 22:13:46 *Tunnelblick: Disconnecting; 'disconnect' button pressed
2012-05-15 22:13:46 *Tunnelblick: Flushed the DNS cache
2012-05-15 22:13:46 us=255591 MANAGEMENT: CMD 'hold release'
2012-05-15 22:13:46 us=255866 WARNING: No server certificate verification method has been enabled.  See http://openvpn.net/howto.html#mitm for more info.
2012-05-15 22:13:46 us=255923 NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
2012-05-15 22:13:46 us=256086 Re-using SSL/TLS context
2012-05-15 22:13:46 us=256190 LZO compression initialized
2012-05-15 22:13:46 us=256334 Control Channel MTU parms [ L:1544 D:140 EF:40 EB:0 ET:0 EL:0 ]
2012-05-15 22:13:46 us=256411 Socket Buffers: R=[262140->65536] S=[131070->65536]
2012-05-15 22:13:46 us=256470 Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:135 ET:0 EL:0 AF:3/1 ]
2012-05-15 22:13:46 us=256532 Local Options String: 'V4,dev-type tun,link-mtu 1544,tun-mtu 1500,proto TCPv4_CLIENT,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-client'
2012-05-15 22:13:46 us=256583 Expected Remote Options String: 'V4,dev-type tun,link-mtu 1544,tun-mtu 1500,proto TCPv4_SERVER,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-server'
2012-05-15 22:13:46 us=256640 Local Options hash (VER=V4): '69109d17'
2012-05-15 22:13:46 us=256694 Expected Remote Options hash (VER=V4): 'c0103fa8'
2012-05-15 22:13:46 us=256749 Attempting to establish TCP connection with 192.168.178.10:1194 [nonblock]
2012-05-15 22:13:46 us=256805 MANAGEMENT: >STATE:1337112826,TCP_CONNECT,,,
2012-05-15 22:13:46 us=654629 TCP/UDP: Closing socket
2012-05-15 22:13:46 us=655286 SIGTERM[hard,init_instance] received, process exiting
2012-05-15 22:13:46 us=655410 MANAGEMENT: >STATE:1337112826,EXITING,init_instance,,

I’ve also tried regenerating the certificates, also on another machine, Linux instead of Mac OS X.
Thank you for you help again!

Если в двух словах, то SSL/TLS-сертификат (SSL: Secure Sockets Layer, TLS: Transport Layer Security) – это уникальная цифровая подпись, необходимая для организации защищенного соединения между клиентом и сервером.

 
Создание SSL-сертификата условно можно разделить на следующие шаги:

  • создание личного ключа (Private Key);
  • создание запроса для получения сертификата (Certificate Signing Request);
  • создание самоподписанного сертификата (Self-Signed Certificate).


Для создания сертификатов я написал небольшой скриптик:

#!/bin/sh
#--------------------------------------------------------------------------
# certroutine.sh: script for creating SSL Certificates
# $Revision: 1.00 (CentOS Edition by Wakko Warner) $
# $Comment: Any comments please send to wakko@acmelabs.spb.ru $
#--------------------------------------------------------------------------

#################
# User Settings #
#################
# Country Name (2 letter code)
  C_="RU"
# State or Province Name (full name)
  ST_="North-West"
# Locality Name (eg, city)
  L_="Saint-Petersburg"
# Organizational Name (eg, company)
  O_=""
# Organizational Unit Name (eg, section)
  OU_=""
# Common Name (eg, YOUR name, domain or host name, don't add *. for wildcards)
  CN_=""
# Email Address
  EM_=""
# Subject Alternative Names (enter * for wildcard certificate)
  SAN_=""

[ "$C" == "" ] && C="$C_"; [ "$ST" == "" ] && ST="$ST_"; [ "$L" == "" ] && L="$L_"
[ "$O" == "" ] && O="$O_"; [ "$OU" == "" ] && OU="$OU_"; [ "$CN" == "" ] && CN="$CN_"
[ "$EM" == "" ] && EM="$EM_"; [ "$SAN" == "" ] && SAN="$SAN_"
if [ "$CN" == "" ]; then
	echo "This script allows you to create:"
	echo "  o public/private key pairs"
	echo "  o SSL certificate signing requests (CSRs)"
	echo "  o self-signed SSL certificates"
	echo
	echo "Edit settings in the script before beginning!"
	exit 0
fi

OPENSSL=/usr/bin/openssl
UTF8=`locale -c LC_CTYPE -k | grep -q charmap.*UTF-8 && echo -utf8`
KEYLEN=2048
TYPE=rsa:${KEYLEN}
[ "$SERIAL" == "" ] && SERIAL=0
[ "$DAYS" == "" ] && DAYS=365

TLSROOT=/etc/pki/tls
KEY=${TLSROOT}/private/$CN.key
CSR=${TLSROOT}/certs/$CN.csr
CRT=${TLSROOT}/certs/$CN.crt
PEM=${TLSROOT}/certs/$CN.pem
if [ "$SAN" == "*" ]; then
	CN="*.$CN"
	SAN=""
fi

createconfig() {
	CNF=`/bin/mktemp /tmp/openssl.XXXXXX`
	CONFIG="-batch -config $CNF"
	cat <<EOF >$CNF
[req]
default_bits			= $KEYLEN
default_md			= sha256
distinguished_name		= req_distinguished_name
req_extensions			= v3_req

[req_distinguished_name]
countryName			= Country Name (2 letter code)
countryName_default		= $C
stateOrProvinceName		= State or Province Name (full name)
stateOrProvinceName_default	= $ST
localityName			= Locality Name (eg, city)
localityName_default		= $L
organizationName		= Organizational Name (eg, company)
organizationName_default	= $O
organizationalUnitName		= Organizational Unit Name (eg, section)
organizationalUnitName_default	= $OU
commonName			= Common Name (eg, YOUR name)
commonName_default		= $CN
commonName_max			= 64
emailAddress			= Email Address
emailAddress_default		= $EM

[v3_ca]
basicConstraints		= CA:TRUE
subjectKeyIdentifier		= hash
authorityKeyIdentifier		= keyid:always,issuer:always

[v3_req]
basicConstraints		= CA:FALSE
keyUsage			= nonRepudiation, digitalSignature, keyEncipherment
EOF
	if [ ! "$SAN" == "" ]; then
		echo "subjectAltName			= @alt_names" >>$CNF
		echo "" >>$CNF
		echo "[alt_names]" >>$CNF
		i=0
		for AN in $SAN
		do
			((i++))
			echo "DNS.$i				= $AN" >>$CNF
		done
	fi
}

usage() {
	echo "This script allows you to create:"
	echo "  o public/private key pairs"
	echo "  o SSL certificate signing requests (CSRs)"
	echo "  o self-signed SSL certificates"
	echo
	echo Usage:
	echo "  To create a KEY file, run "$0 genkey";"
	echo "  To create a CSR file, run "$0 gencsr";"
	echo "  To create a CRT file, run "$0 gencrt";"
	echo "  To create a PEM file, run "$0 genpem";"
	echo "  To verify a CSR file, run "$0 verifycsr";"
	echo "  To verify a CRT file, run "$0 verifycrt"."
	echo
	echo "${TLSROOT}/private/ is output directory for key files"
	echo "${TLSROOT}/certs/ is output directory for CSR, CRT and PEM files"
	echo
	echo "To create a test certificate with serial number other than zero, add SERIAL=num"
	echo "You can also specify key length with KEYLEN=n and expiration in days with DAYS=n"
	echo "Also you can specify C=, ST=, L=, O=, OU=, CN=, EM=, SAN=..."
	echo
	echo Examples:
	echo "  CN=www.example.com $0 genkey"
	echo "  CN=www.example.com SAN="mail.example.com blog.example.com" $0 gencsr"
	echo "  CN=www.example.com SAN="mail.example.com blog.example.com" $0 gencrt"
	return 0
}

genkey() {
	umask 77
	$OPENSSL genrsa $KEYLEN -sha256 -nodes >$KEY
	return 0
}

gencsr() {
	umask 77
	[ ! -f $KEY ] && genkey
	createconfig
	$OPENSSL req $UTF8 -new -key $KEY -out $CSR $CONFIG
	rm -f $CNF
	return 0
}

verifycsr() {
	$OPENSSL req -in $CSR -text -verify -noout
	return 0
}

gencrt() {
	umask 77
	[ ! -f $KEY ] && genkey
	createconfig
	$OPENSSL req $UTF8 -new -key $KEY -x509 -days $DAYS -out $CRT $CONFIG -set_serial $SERIAL
	rm -f $CNF
	CRTHASH=`openssl x509 -hash -noout -in $CRT`.0
	rm -f ${TLSROOT}/certs/$CRTHASH
	ln -s $CN.crt ${TLSROOT}/certs/$CRTHASH
	return 0
}

verifycrt() {
	$OPENSSL verify $CRT
	return 0
}

genpem() {
	umask 77
	PEM1=`/bin/mktemp /tmp/openssl.XXXXXX`
	PEM2=`/bin/mktemp /tmp/openssl.XXXXXX`
	createconfig
	$OPENSSL req $UTF8 -newkey $TYPE -keyout $PEM1 -nodes -x509 -days $DAYS -out $PEM2 
		$CONFIG -set_serial $SERIAL
	rm -f $CNF
	cat $PEM1 >  $PEM
	echo ""   >> $PEM
	cat $PEM2 >> $PEM
	rm -f $PEM1 $PEM2
	return 0
}

case $1 in
	genkey | gencsr | gencrt | genpem | verifycsr | verifycrt)
		$1
		exit $?
	;;
	*)
		usage
		exit $?
	;;
esac

В верхней части скрипта можно заполнить дефолтные значения:

# Country Name (2 letter code)
  C_="RU"
# State or Province Name (full name)
  ST_="North-West"
# Locality Name (eg, city)
  L_="Saint-Petersburg"
# Organizational Name (eg, company)
  O_="Example Organization"
# Organizational Unit Name (eg, section)
  OU_=""
# Common Name (eg, YOUR name, domain or host name, don't add *. for wildcards)
  CN_="www.example.com"
# Email Address
  EM_="hostmaster@example.com"
# Subject Alternative Names (enter * for wildcard certificate)
  SAN_="mail.example.com"

Тогда для создания ключа и самоподписанного сертификата, нужно будет выполнить:

$ ./certroutine.sh genkey
Generating RSA private key, 2048 bit long modulus
............................................+++
.....................................+++
e is 65537 (0x10001)
$ ./certroutine.sh gencrt
$ ./certroutine.sh verifycrt
/etc/pki/tls/certs/www.example.com.crt: OK

Первая команда создаст приватный ключ /etc/pki/tls/private/www.example.com.key, вторая команда создаст самоподписанный сертификат /etc/pki/tls/certs/www.example.com.crt, а третья команда проверит валидность этого сертификата.
Note: Безотносительно скрипта, если при проверке любого сертификата пишется что-то типа:

/etc/pki/tls/certs/www.example.com.crt: C = RU, ST = North-West, L = Saint-Petersburg, O = ACME Networks, CN = www.example.com, emailAddress = admin@acmenet.ru
error 18 at 0 depth lookup:self signed certificate
OK

Это означает, что для этого сертификата, в папке /etc/pki/tls/certs отсутствует необходимая информация для проверки. Необходимо убедиться, что в этой папке присутствует проверяемый сертификат, а так же присутствуем симлинк с хэшем вместо имени, на проверяемый сертификат. Если симлинка нет – его необходимо создать:

$ cd /etc/pki/tls/certs
$ ln -s $CRT `openssl x509 -hash -noout -in $CRT`.0

Где вместо $CRT – имя файла нашего сертификата.

 
Если планируется подписывать сертификат по-взрослому, на стороне – необходимо создать личный ключ и запроса для получения сертификата:

$ ./certroutine.sh genkey
Generating RSA private key, 2048 bit long modulus
............................................+++
.....................................+++
e is 65537 (0x10001)
$ ./certroutine.sh gencsr
$ ./certroutine.sh verifycsr
verify OK
Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=RU, ST=North-West, L=Saint-Petersburg, O=ACME Networks, CN=www.example.com/emailAddress=admin@acmenet.ru
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    [...]
                Exponent: 65537 (0x10001)
        Attributes:
        Requested Extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            X509v3 Key Usage: 
                Digital Signature, Non Repudiation, Key Encipherment
    Signature Algorithm: sha256WithRSAEncryption
         [...]
$ cat /etc/pki/tls/certs/www.example.com.csr
-----BEGIN CERTIFICATE REQUEST-----
[...]
-----END CERTIFICATE REQUEST-----

Содержимое этого csr-файла необходимо будет отправлять в компанию, которая будет заверять ваш сертификат.

 
Так же, скриптом можно пользоваться вот таким образом:

$ CN="www.example.com" ./certroutine.sh genkey
$ C="RU" ST="North-West" L="Saint-Petersburg" O="Example Org" CN="www.example.com" 
	EM="hostmaster@example.com" SAN="mail.example.com" ./certroutine.sh gencsr
$ C="RU" ST="North-West" L="Saint-Petersburg" O="Example Org" CN="www.example.com" 
	EM="hostmaster@example.com" SAN="mail.example.com" ./certroutine.sh gencrt

 
Если будете использовать бесплатные сертификаты от StartSSL, не забудьте сделать следующее:

$ cd /etc/pki/tls/certs
$ wget https://www.startssl.com/certs/sub.class1.server.ca.pem
$ ln -s sub.class1.server.ca.pem `openssl x509 -hash -noout -in sub.class1.server.ca.pem`.0

Иначе при верификации сертификата будете получать ошибку:

$ openssl verify mail.example.com.crt 
mail.example.com.crt: C = RU, CN = mail.example.com, emailAddress = hostmaster@example.com
error 20 at 0 depth lookup:unable to get local issuer certificate

Материал из Xgu.ru

Перейти к: навигация, поиск

OpenSSL — универсальный криптографический инструмент,
построенный вокруг протоколов SSL/TLS и сертификатов X.509.

Помимо того, что этот инструмент позволяет
работать с соединениями SSL/TLS, сертификатами X.509,
он может делать множество других полезных вещей:
шифровать и расшифровывать файлы,
создавать и проверять цифровые подписи,
проверять числа на простоту,
тестировать производительность компьютера
и другое.

Содержание

  • 1 Вопросы и ответы
    • 1.1 Введение
      • 1.1.1 Как определить какую версию OpenSSL я использую?
      • 1.1.2 Как получить список доступных команд?
      • 1.1.3 Как посмотреть список доступных шифров?
    • 1.2 Измерение производительности
      • 1.2.1 Как измерить производительность системы с помощью openssl?
      • 1.2.2 Как измерить производительность сетевого соединения?
    • 1.3 Сертификаты
      • 1.3.1 Как сгенерировать самоподписной сертификат?
      • 1.3.2 Как сгенерировать запрос сертификата у VeriSign?
      • 1.3.3 Как проверить новый сертификат?
      • 1.3.4 Как получить удалённый сертификат?
      • 1.3.5 Как извлечь какую-либо информацию из сертификата?
      • 1.3.6 Как экспортировать или импортировать сертификат PKCS#12?
    • 1.4 Проверка сертификата
      • 1.4.1 Как проверить сертификат?
      • 1.4.2 Какие центры сертификации распознаёт OpenSSL?
      • 1.4.3 Как мне заставить OpenSSL признавать сертификат?
    • 1.5 Клиенты и серверы для командной строки
      • 1.5.1 Как подключиться к безопасному SMTP-серверу?
      • 1.5.2 Как подключиться к [какому-либо] безопасному серверу?
      • 1.5.3 Как запустить SSL-сервер из командной строки?
    • 1.6 Дайджесты
      • 1.6.1 Как создавать дайджесты MD5 или SHA1?
      • 1.6.2 Как подписать дайджест?
      • 1.6.3 Как проверить подписанный дайджест?
      • 1.6.4 Как создать запись типа digest для файла паролей Apache?
      • 1.6.5 Какие ещё есть дайджесты?
    • 1.7 Шифрование/расшифровка
      • 1.7.1 Как закодировать что-то по методу base64?
      • 1.7.2 Как зашифровать файл?
    • 1.8 Ошибки
      • 1.8.1 Как интерпретировать сообщения об ошибках SSL?
    • 1.9 Ключи
      • 1.9.1 Как сгенерировать ключ RSA?
      • 1.9.2 Как сгенерировать открытый ключ RSA?
      • 1.9.3 Как сгенерировать ключ DSA?
      • 1.9.4 Как создать ключ, основанный на эллиптических кривых (elliptic curve key)?
      • 1.9.5 Как создать открытый EC ключ?
      • 1.9.6 Как удалить парольную фразу у ключа?
    • 1.10 Хэши для паролей
      • 1.10.1 Как сгенерировать хэш в стиле crypt?
      • 1.10.2 Как сгенерировать хэш пароля в стиле shadow?
    • 1.11 Простые числа
      • 1.11.1 Как проверить, является ли число простым?
      • 1.11.2 Как сгенерировать набор простых чисел?
    • 1.12 Случайные данные
      • 1.12.1 Как генерировать случайные данные?
    • 1.13 S/MIME
      • 1.13.1 Как проверить подписанное сообщение S/MIME?
      • 1.13.2 Как зашифровать сообщение S/MIME?
      • 1.13.3 Как подписать сообщение S/MIME?
  • 2 Подключение сертифицированного СКЗИ Рутокен ЭЦП к OpenSSL
  • 3 Дополнительная информация
  • 4 Примечания

Вопросы и ответы

Раздел написан на основе OpenSSL Command-Line HOWTO[1]

Введение

Как определить какую версию OpenSSL я использую?

Использовать опцию version:

$ openssl version
OpenSSL 0.9.8b 04 May 2006

Расширенная информация с опцией -a:

$ openssl version -a
OpenSSL 0.9.8b 04 May 2006
built on: Fri Sep 29 18:45:58 UTC 2006
platform: debian-i386-i686/cmov
options:  bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) blowfish(idx) 
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT
-DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -O3 -march=i686
-Wa,--noexecstack -g -Wall -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2
-DSHA1_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM
OPENSSLDIR: "/usr/lib/ssl"

Как получить список доступных команд?

Вызвать с неправильным ключом (например, help или -h).

$ openssl help
openssl:Error: 'help' is an invalid command.

Standard commands
asn1parse      ca             ciphers        crl            crl2pkcs7      
dgst           dh             dhparam        dsa            dsaparam       
ec             ecparam        enc            engine         errstr         
gendh          gendsa         genrsa         nseq           ocsp           
passwd         pkcs12         pkcs7          pkcs8          prime          
rand           req            rsa            rsautl         s_client       
s_server       s_time         sess_id        smime          speed          
spkac          verify         version        x509           

Message Digest commands (see the `dgst' command for more details)
md2            md4            md5            rmd160         sha            
sha1           

Cipher commands (see the `enc' command for more details)
aes-128-cbc    aes-128-ecb    aes-192-cbc    aes-192-ecb    aes-256-cbc    
aes-256-ecb    base64         bf             bf-cbc         bf-cfb         
bf-ecb         bf-ofb         cast           cast-cbc       cast5-cbc      
cast5-cfb      cast5-ecb      cast5-ofb      des            des-cbc        
des-cfb        des-ecb        des-ede        des-ede-cbc    des-ede-cfb    
des-ede-ofb    des-ede3       des-ede3-cbc   des-ede3-cfb   des-ede3-ofb   
des-ofb        des3           desx           rc2            rc2-40-cbc     
rc2-64-cbc     rc2-cbc        rc2-cfb        rc2-ecb        rc2-ofb        
rc4            rc4-40

Аналогично с подкомандами:

$ openssl dgst -h
unknown option '-h'
options are
-c              to output the digest with separating colons
-d              to output debug info
-hex            output as hex dump
-binary         output in binary form
-sign   file    sign digest using private key in file
-verify file    verify a signature using public key in file
-prverify file  verify a signature using private key in file
-keyform arg    key file format (PEM or ENGINE)
-signature file signature to verify
-binary         output in binary form
-engine e       use engine e, possibly a hardware device.
-md5 to use the md5 message digest algorithm (default)
-md4 to use the md4 message digest algorithm
-md2 to use the md2 message digest algorithm
-sha1 to use the sha1 message digest algorithm
-sha to use the sha message digest algorithm
-sha256 to use the sha256 message digest algorithm
-sha512 to use the sha512 message digest algorithm
-mdc2 to use the mdc2 message digest algorithm
-ripemd160 to use the ripemd160 message digest algorithm

Как посмотреть список доступных шифров?

Использовать команду ciphers:

# все доступные шифры
openssl ciphers -v

# только шифры TLSv1
openssl ciphers -v -tls1

# только шифры длиною больше 128 битов (high ciphers)
openssl ciphers -v 'HIGH'

# только шифры длиною больше 128 битов, использующие AES
openssl ciphers -v 'AES+HIGH'

Измерение производительности

Как измерить производительность системы с помощью openssl?

Общая производительность:

openssl speed

Пример для 2.16GHz Intel Core 2.

The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
md2               1736.10k     3726.08k     5165.04k     5692.28k     5917.35k
mdc2                 0.00         0.00         0.00         0.00         0.00 
md4              18799.87k    65848.23k   187776.43k   352258.73k   474622.63k
md5              16807.01k    58256.45k   160439.13k   287183.53k   375220.91k
hmac(md5)        23601.24k    74405.08k   189993.05k   309777.75k   379431.59k
sha1             16774.59k    55500.39k   142628.69k   233247.74k   288382.98k
rmd160           13854.71k    40271.23k    87613.95k   124333.06k   141781.67k
rc4             227935.60k   253366.06k   261236.94k   259858.09k   194928.50k
des cbc          48478.10k    49616.16k    49765.21k    50106.71k    50034.01k
des ede3         18387.39k    18631.02k    18699.26k    18738.18k    18718.72k
idea cbc             0.00         0.00         0.00         0.00         0.00 
rc2 cbc          19247.24k    19838.12k    19904.51k    19925.33k    19834.98k
rc5-32/12 cbc        0.00         0.00         0.00         0.00         0.00 
blowfish cbc     79577.50k    83067.03k    84676.78k    84850.01k    85063.00k
cast cbc         45362.14k    48343.34k    49007.36k    49202.52k    49225.73k
aes-128 cbc      58751.94k    94443.86k   111424.09k   116704.26k   117997.57k
aes-192 cbc      53451.79k    82076.22k    94609.83k    98496.85k    99150.51k
aes-256 cbc      49225.21k    72779.84k    82266.88k    85054.81k    85762.05k
sha256            9359.24k    22510.83k    40963.75k    51710.29k    56014.17k
sha512            7026.78k    28121.32k    54330.79k    86190.76k   104270.51k
                sign    verify    sign/s verify/s
rsa  512 bits 0.000522s 0.000042s   1915.8  23969.9
rsa 1024 bits 0.002321s 0.000109s    430.8   9191.1
rsa 2048 bits 0.012883s 0.000329s     77.6   3039.6
rsa 4096 bits 0.079055s 0.001074s     12.6    931.3
                sign    verify    sign/s verify/s
dsa  512 bits 0.000380s 0.000472s   2629.3   2117.9
dsa 1024 bits 0.001031s 0.001240s    969.6    806.2
dsa 2048 bits 0.003175s 0.003744s    314.9    267.1

Каждый тест можно вызывать отдельно:

# проверить скорость rsa
openssl speed rsa

# проверить то же самое на 2-процессорной системе
openssl speed rsa -multi 2

Как измерить производительность сетевого соединения?

openssl s_time -connect remote.host:443

Помимо этого простейшего измерения у подкоманды s_time
есть множество других возможностей:

# получить удалённую страницу test.html, используя только новые сеансы
openssl s_time -connect remote.host:443 -www /test.html -new

# аналогично, но только используя SSLv3 и сильное шифрование
# (подробности относительно шифрования в ciphers(1))
openssl s_time 
  -connect remote.host:443 -www /test.html -new 
  -ssl3 -cipher HIGH

# сравнить относительную производительность разных шифров
# 10-секундные тесты
IFS=":"
for c in $(openssl ciphers -ssl3 RSA); do
echo $c
openssl s_time -connect remote.host:443 
    -www / -new -time 10 -cipher $c 2>&1 | 
    grep bytes
echo
done

Сэмулировать web-сервер с помощью openssl s_server:

# запустить сервер (на порту 4433)
openssl s_server -cert mycert.pem -www

# на втором хосте (или даже этом же) запустить s_time
openssl s_time -connect myhost:4433 -www / -new -ssl3

Сертификаты

Как сгенерировать самоподписной сертификат?

Создать файл mycert.pem, в котором будет и секретный ключ
и открытый сертификат, основанный на нём. Сертификат будет
действителен в течение 365 дней; ключ (благодаря опции -nodes)
будет нешифрованным.

openssl req 
    -x509 -nodes -days 365 
    -newkey rsa:1024 -keyout mykey.pem -out mycert.pem

После вызова команды надо будет ответить на несколько вопросов: Country Name, State, City и так далее. На вопрос “Common Name” нужно отвечать именем сервера, по которому будут обращаться люди.

Можно автоматизировать ввод ответов с помощью опции -subj.

openssl req 
  -x509 -nodes -days 365 
  -subj '/C=US/ST=Oregon/L=Portland/CN=www.madboa.com' 
  -newkey rsa:1024 -keyout mycert.pem -out mycert.pem

Как сгенерировать запрос сертификата у VeriSign?

Секретный ключ в файле mykey.pem и запрос на сертификат myreq.pem:

openssl req 
  -new -newkey rsa:1024 -nodes 
  -keyout mykey.pem -out myreq.pem

Если ключ уже есть, и его надо использовать только для генерации сертификата,
используется команда попроще:

openssl req -new -key mykey.pem -out myreq.pem

Или, с информацией для сертификата прямо в командной строке:

openssl req 
-new -newkey rsa:1024 -nodes 
-subj '/CN=www.mydom.com/O=My Dom, Inc./C=US/ST=Oregon/L=Portland' 
-keyout mykey.pem -out myreq.pem

Не допускайте ошибок в названиях! Каждый символ важен.

Проверка:

# проверить подпись
openssl req -in myreq.pem -noout -verify -key mykey.pem

# проверить информацию
openssl req -in myreq.pem -noout -text

Файл с ключом нужно сохранить в надёжном месте.

Как проверить новый сертификат?

Подкоманда s_server предоставляет простой, но эффективный метод тестирования.
В примерах ниже предполагается, что ключ и сертификат хранятся в файле mycert.pem.

Запустите тестовый сервер на машине, на которой будет использоваться сертификат.
По умолчанию, открывается порт 4433; другой порт можно задать опцией -accept.

openssl s_server -cert mycert.pem -www

Если команда запустилась без ошибок,
открывайте в браузере страницу: https://127.0.0.1:4433/

Как получить удалённый сертификат?

С помощью openssl и sed:

#!/bin/sh
#
# usage: retrieve-cert.sh remote.host.name [port]
#
REMHOST=$1
REMPORT=${2:-443}

echo |
openssl s_client -connect ${REMHOST}:${REMPORT} 2>&1 |
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'

Можно вернуть данные openssl,
например, для того чтобы выяснить,
для каких дат он действителен:

#!/bin/sh
#
for CERT in 
  www.yourdomain.com:443 
  ldap.yourdomain.com:636 
  imap.yourdomain.com:993
do
  echo |
  openssl s_client -connect ${CERT} 2>/dev/null |
  sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' |
  openssl x509 -noout -subject -dates
done

Как извлечь какую-либо информацию из сертификата?

В SSL-сертификате есть много информации, в частности:

  • кто выдал сертификат (issuer);
  • насколько долго он действителен (valid dates);
  • получатель сертификата (subject);
  • разнообразная криптографическая информация.

Опция текст даёт весь объём информации:

openssl x509 -text -in cert.pem

Другие опции дают другую информацию:

# кто его выдал?
openssl x509 -noout -in cert.pem -issuer

# кому его выдали?
openssl x509 -noout -in cert.pem -subject

# до какой даты он действителен?
openssl x509 -noout -in cert.pem -dates

# всё вышеперечисленное:
openssl x509 -noout -in cert.pem -issuer -subject -dates

# какой у него хэш?
openssl x509 -noout -in cert.pem -hash

# какой у него отпечаток MD5?
openssl x509 -noout -in cert.pem -fingerprint

Извлечение открытого ключа, который требуется для проверки цифровой подписи (дайджеста):

openssl x509 -noout -in cert.pem -pubkey > pubkey.pem

Как экспортировать или импортировать сертификат PKCS#12?

Файлы PKCS#12 используются в разных приложениях типа MS IIS.
Они часто имеют расширение .pfx.

# создать файл, содержащий ключ и самоподписной сертификат
openssl req 
  -x509 -nodes -days 365 
  -newkey rsa:1024 -keyout mycert.pem -out mycert.pem

# экспортировать mycert.pem как файл PKCS#12, mycert.pfx
openssl pkcs12 -export 
  -out mycert.pfx -in mycert.pem 
  -name "My Certificate"

Превратить pfx в pem:

# export certificate and passphrase-less key
openssl pkcs12 -in mycert.pfx -out mycert.pem -nodes

# same as above, but you’ll be prompted for a passphrase for
# the private key
openssl pkcs12 -in mycert.pfx -out mycert.pem

Проверка сертификата

Приложения, слинкованные с библиотеками OpenSSL,
могут проверять подлинность сертификатов, выданных сервером сертификатов (certificate authority, CA).

Как проверить сертификат?

Использовать подкоманду verify:

openssl verify cert.pem

Если в сертификате всё в норме, то будет выдано сообщение OK:

$ openssl verify remote.site.pem
remote.site.pem: OK

Если чего-то не хватает, появятся соответствующие сообщения об ошибках, например:

  • error 10 at 0 depth lookup:certificate has expired. Время действия сертификата истекло.
  • error 18 at 0 depth lookup:self signed certificate. Если не указать явным образом, openssl не будет проверять самоподписные сертификаты (self-signed certificate).

Какие центры сертификации распознаёт OpenSSL?

При сборке OpenSSL в нём настраивается местоположение OpenSSL-файлов (Directory for OpenSSL files). Этот параметр задаётся опцией —openssldir, передающейся конфигурационному скрипту.
В этом каталоге, как правило, хранится информация о центрах сертификации, которым
доверяет система.

По умолчанию, этот каталог находится в /usr/local/ssl, но большинство сборщиков
размещает его в других местах, таких как /etc/pki/tls (Red Hat/Fedora), /etc/ssl (Gentoo), /usr/lib/ssl (Debian) или /System/Library/OpenSSL (Macintosh OS X).

Посмотреть, какой именно каталог используется в конкретной инсталляции,
можно с помощью опции version(параметр OPENSSLDIR):

openssl version -d

Внутри данного каталога есть подкаталог certs/,
в котором находятся файлы трёх разных типов:

  1. Большой файл под названием cert.pem, объёмистый сборник многих сертификатов от признанных общеизвестных центров сертификации, таких как VeriSign и Thawte.
  2. Множество маленьких файлов с расширением .pem, каждый из которых содержит сертификат от отдельного центра сертификации;
  3. Символические ссылки в со странными именами вида 052eae11.0. Как правило, для каждого .pem-файла есть такая ссылка.

Первая часть странного имени ссылки — это, на самом деле, хэш, основанный на сертификате
внутри .pem-файла, на который эта ссылка указывает. Расширение файла это итератор (то есть, номер), поскольку теоретически возможно, что разные сертификаты укажут на одинаковый хэш.

Например, ссылка f73e89fd.0 указывает на файл vsignss.pem.
Значит, сертификат соответствует хэшу, который равен имени ссылки:

$ openssl x509 -noout -hash -in vsignss.pem
f73e89fd

Когда приложение получает удалённый сертификат, оно сначала проверяет,
есть ли этот сертификат в cert.pem и, если нет, смотрит в файле,
соответствующем хэшу сертификата. Если такой файл найден, сертификат считается
верным.

Нужно иметь в виду, что некоторые приложения, такие как Sendmail, например,
позволяют во время исполнения указывать местоположение сертификатов,
а некоторые, например Pine, нет.

Как мне заставить OpenSSL признавать сертификат?

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

#!/bin/sh
#
# usage: certlink.sh filename [filename ...]

for CERTFILE in "$@"; do
  # Убедиться, что файл существует и это сертификат
  test -f "$CERTFILE" || continue
  HASH=$(openssl x509 -noout -hash -in "$CERTFILE")
  test -n "$HASH" || continue

  # использовать для ссылки наименьший итератор
  for ITER in 0 1 2 3 4 5 6 7 8 9; do
    test -f "${HASH}.${ITER}" && continue
    ln -s "$CERTFILE" "${HASH}.${ITER}"
    test -L "${HASH}.${ITER}" && break
  done
done

Клиенты и серверы для командной строки

Подкоманды s_client и s_server предоставляют возможность
для запуска SSL-клиентов для командной строки.

Как подключиться к безопасному SMTP-серверу?

С помощью подкоманды s_client можно проверить
или даже использовать SMTP-сервер с поддержкой SSL.

Безопасные SMTP-серверы могут предлагать безопасные соединения на портах:
25 (TLS), 465 (SSL) и 587 (TLS). Где-то в районе релиза 0.9.7
у openssl появилась возможность использовать STARTTLS в ходе общения с SMTP-серверами.

# порт 25/TLS; использовать такой же синтаксис для порта 587
openssl s_client -connect remote.host:25 -starttls smtp

# порт 465/SSL
openssl s_client -connect remote.host:465

Чтобы использовать для обозначения конца строки именно CRLF, а не CR или LF,
используется опция -crlf. Это важно особенно для Qmail.

openssl s_client -connect remote.host:25 -crlf -starttls smtp

Как подключиться к [какому-либо] безопасному серверу?

На момент написания openssl поддерживал TLS из командной строки
только с SMTP, поэтому для других протоколов нужно использовать
прямые SSL-соединения.

# https: HTTP over SSL
openssl s_client -connect remote.host:443

# ldaps: LDAP over SSL
openssl s_client -connect remote.host:636

# imaps: IMAP over SSL
openssl s_client -connect remote.host:993

# pop3s: POP-3 over SSL
openssl s_client -connect remote.host:995

Как запустить SSL-сервер из командной строки?

Подкоманда s_server позволяет запустить сервер с поддержкой SSL
прямо из командной строки; сервер предназначен только для проверки
и отладки. Для полноценной работы рекомендуется использовать stunnel.

Подкоманда s_server работает намного лучше, если есть сертификат;
когда его нет, её возможности сильно сокращаются.

# при использовании опции -www 
# каждому HTTP-клиенту, запросившему страницу
# будет отправляться статусная страничка HTML
openssl s_server -cert mycert.pem -www

# опция -WWW эмулирует простой web-сервер;
# поиск страничек будет выполняться относительно текущего каталога
# В этом примере прослушивание будет выполнять на порт 443, не на 4433 как обычно
openssl s_server -accept 443 -cert mycert.pem -WWW

Дайджесты

Создание дайджестов (криптографических контрольных сумм) с помощью подкоманды dgst — одна из наиболее распространённых задач, выполняемых с помощью openssl.

Как создавать дайджесты MD5 или SHA1?

Дайджесты создаются с помощью подкоманды dgst:

 # MD5 digest
 openssl dgst -md5 filename
 
 # SHA1 digest
 openssl dgst -sha1 filename

Дайджест MD5 эквивалентен дайджесту, создаваемому известной утилитой md5sum,
хотя выводится в другом формате:

$ openssl dgst -md5 foo-2.23.tar.gz
MD5(foo-2.23.tar.gz)= 81eda7985e99d28acd6d286aa0e13e07
$ md5sum foo-2.23.tar.gz
81eda7985e99d28acd6d286aa0e13e07  foo-2.23.tar.gz

То же верно и для дайджестов SHA1 и программы sha1sum:

$ openssl dgst -sha1 foo-2.23.tar.gz
SHA1(foo-2.23.tar.gz)= e4eabc78894e2c204d788521812497e021f45c08
$ sha1sum foo-2.23.tar.gz
e4eabc78894e2c204d788521812497e021f45c08  foo-2.23.tar.gz

Как подписать дайджест?

Для того, чтобы быть уверенным, что дайджест никто не изменял,
его можно подписать с помощью своего закрытого ключа.

Подписать дайджест SHA1 для файла foo-1.23.tar.gz:

# подписанный дайджест будет в foo-1.23.tar.gz.sha1
openssl dgst -sha1 
  -sign mykey.pem
  -out foo-1.23.tar.gz.sha1 
  foo-1.23.tar.gz

Как проверить подписанный дайджест?

Для того чтобы проверить правильность дайджеста,
нужен файл, на основе которого был получен дайджест,
сам подписанный дайджест и открытый ключ того, кто подписывал дайджест:

# есть файл foo-1.23.tar.gz, дайджест foo-1.23.tar.gz.sha1
# и открытый ключ pubkey.pem
openssl dgst -sha1 
    -verify pubkey.pem 
    -signature foo-1.23.tar.gz.sha1 
    foo-1.23.tar.gz

Как создать запись типа digest для файла паролей Apache?

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

Формат базы паролей прост: список нескольких полей, разделённых двоеточиями.
Поля:

  • имя пользователя (username);
  • область авторизации (authorization realm; AuthRealm);
  • MD5-суммы для этих полей и пароля.

Скрипт, представленный ниже, повторяет действие htdigest
с той разницей, что выводит данные на стандартный поток вывода.
Кроме того, он умеет считывать данные со стандартного потока ввода.

#!/bin/bash

echo "Create an Apache-friendly Digest Password Entry"
echo "-----------------------------------------------"

# get user input, disabling tty echoing for password
read -p "Enter username: " UNAME
read -p "Enter Apache AuthName: " AUTHNAME
read -s -p "Enter password: " PWORD; echo

printf "n%s:%s:%sn" 
  "$UNAME" 
  "$AUTHNAME" 
  $(printf "${UNAME}:${AUTHNAME}:${PWORD}" | openssl dgst -md5)

Какие ещё есть дайджесты?

Подкоманда list-message-digest-commands даёт
список типов дайджестов, доступных в данной инсталляции.

openssl list-message-digest-commands

Шифрование/расшифровка

Как закодировать что-то по методу base64?

Использовать опцию -base64.

# закодировать file.txt в base64 и вывести его на стандартный поток вывода
openssl enc -base64 -in file.txt

# то же, но вывести результат в файл file.txt.enc
openssl enc -base64 -in file.txt -out file.txt.enc

Закодировать одну строку:

$ echo "encode me" | openssl enc -base64
ZW5jb2RlIG1lCg==

Без перевода строки (важно для паролей):

$ echo -n "encode me" | openssl enc -base64
ZW5jb2RlIG1l

Опция -d выполняет обратный процесс (то есть, раскодирование):

$ echo "ZW5jb2RlIG1lCg==" | openssl enc -base64 -d
encode me

Как зашифровать файл?

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

Список поддерживаемых шифров есть на странице enc(1).
Более просто (и более точно) узнать этот список у самой программы openssl.

# в подзаголовке 'Cipher commands' есть список
openssl -h

# или длинный список, по одному шифру в строке
openssl list-cipher-commands

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

# зашифровать file.txt в file.enc с помощью 256-битного шифра AES в режиме CBC
openssl enc -aes-256-cbc -salt -in file.txt -out file.enc

# то же, но выполнять кодирование base64
openssl enc -aes-256-cbc -a -salt -in file.txt -out file.enc

Расшифровка файла на стороне получателя:

# расшифровать бинарный файл
openssl enc -d -aes-256-cbc -in file.enc

# расшифровать base64-файл
openssl enc -d -aes-256-cbc -a -in file.enc

Можно не вводить парольную фразу постоянно при шифровании и расшифровке,
а передавать её автоматически (подробнее: openssl(1); раздел «PASS PHRASE ARGUMENTS»).
Формат аргумента прост:

# provide password on command line
openssl enc -aes-256-cbc -salt -in file.txt 
  -out file.enc -pass pass:mySillyPassword

# provide password in a file
openssl enc -aes-256-cbc -salt -in file.txt 
  -out file.enc -pass file:/path/to/secret/password.txt

Ошибки

Как интерпретировать сообщения об ошибках SSL?

В системных журналах обнаружились строки, которые, похоже, имеют отношение
к OpenSSL или crypto:

sshd[31784]: error: RSA_public_decrypt failed: error:0407006A:lib(4):func(112):reason(106)
sshd[770]: error: RSA_public_decrypt failed: error:0407006A:lib(4):func(112):reason(106)

В первом приближении определить, что не так,
можно с помощью подкоманды errstr,
которая умеет интерпретировать код ошибки.
Код ошибки находится между «error:» и «:lib».
В данном случае это 0407006A.

$ openssl errstr 0407006A
error:0407006A:rsa routines:RSA_padding_check_PKCS1_type_1:block type is not 01

Дальше информацию надо искать в документации.
В данном случае в man-странице RSA_padding_add_PKCS1_type_1(3)
будет написано, что PKCS #1 использует для подписей блочные методы.

Ключи

Как сгенерировать ключ RSA?

Использовать подкоманду genrsa:

# по умолчанию длина ключа 512 бит; ключ выводится на стандартный поток
openssl genrsa

# ключ 1024 бита, сохраняется в файл mykey.pem
openssl genrsa -out mykey.pem 1024

# то же, что выше, только зашифрован с помощью парольной фразы
openssl genrsa -des3 -out mykey.pem 1024

Как сгенерировать открытый ключ RSA?

С помощью подкоманды rsa можно создать открытую
версию для закрытого ключа RSA:

openssl rsa -in mykey.pem -pubout

Как сгенерировать ключ DSA?

Для построения ключей DSA нужен специальный файл параметров
(parameter file), кроме того, операции с DSA медленнее
чем аналогичные операции с RSA, в связи с этим,
DSA используется не так часто, как RSA.

Если нужно сгенерировать только один ключ DSA,
то это можно сделать одной командой, с помощью подкоманды dsaparam:

# ключ будет называться dsakey.pem
openssl dsaparam -noout -out dsakey.pem -genkey 1024

Если же нужно создавать несколько ключей DSA, перед тем как их генерировать,
можно сделать общий файл параметров.
Файл параметров генерируется сравнительно медленно,
а файлы ключей очень быстро.

# записать параметры в dsaparam.pem
openssl dsaparam -out dsaparam.pem 1024

# создать первый ключ
openssl gendsa -out key1.pem dsaparam.pem

# и второй
openssl gendsa -out key2.pem dsaparam.pem

Как создать ключ, основанный на эллиптических кривых (elliptic curve key)?

Процедуры для работы с эллиптическими кривыми были добавлены в openssl,
начиная с версии 0.9.8.
Работа с этими процедурами выполняется через подкоманду ecparam.

openssl ecparam -out key.pem -name prime256v1 -genkey

# openssl может показать полный список параметров кривых, 
# который можно передавать с опцией <tt>-name</tt>
openssl ecparam -list_curves

Как создать открытый EC ключ?

С помощью подкоманды ec можно создать открытую
версию для закрытого ключа EC (elliptic curve):

openssl ec -in key.pem -pubout -out pub.pem

Как удалить парольную фразу у ключа?

Каждый раз, когда запускается демон, использующий ключ,
надо будет набирать парольную фразу.
Её можно убрать.

Допустим, ключ, зашифрованный парольной фразой,
находится в файле key.pem; после выполнения команды
расшифрованный ключ будет в newkey.pem:

# надо будет ввести парольную фразу
openssl rsa -in key.pem -out newkey.pem

Если закрытый ключ (private key)
и открытый сертификат хранятся в одном файле,
нужно будет выполнить две команды:

# надо ввести парольную фразу ещё раз
openssl rsa -in mycert.pem -out newcert.pem
openssl x509 -in mycert.pem >>newcert.pem

Хэши для паролей

С помощью подкоманды passwd можно генерировать хэши паролей, которые совместимы
со стандартными хэшами из /etc/passwd, /etc/shadow или файла паролей Apache.

Как сгенерировать хэш в стиле crypt?

Сгенерировать хэш очень просто:

$ openssl passwd MySecret
8E4vqBR4UOYF.

Если salt для пароля известен, можно воссоздать хэш.

$ openssl passwd -salt 8E MySecret
8E4vqBR4UOYF.

Как сгенерировать хэш пароля в стиле shadow?

В новых UNIX/Linux-системах вместо старого crypt-хэша используется
новый, более стойкий хэш MD5. Его генерирование выполняется с помощью
ключа -1:

$ openssl passwd -1 MySecret
$1$sXiKzkus$haDZ9JpVrRHBznY5OxB82.

В этом формате salt состоит из 8 символов; он находится между вторым и третьим знаком $,
в данном случае это sXiKzkus.

$ openssl passwd -1 -salt sXiKzkus MySecret
$1$sXiKzkus$haDZ9JpVrRHBznY5OxB82.

Простые числа

Поскольку openssl активно использует механизмы для работы с простыми числами,
не удивительно, что в нём есть соответствующие процедуры.
Начиная с версии 0.9.7e (или где-то так), в openssl появилась подкоманда binary.

Как проверить, является ли число простым?

Передать число как аргумент к подкоманде prime. Результат будет не в десятичном,
а в шестнадцатеричном виде.

$ openssl prime 119054759245460753
1A6F7AC39A53511 is not prime

Можно проверять и шестнадцатеричные числа:

$ openssl prime -hex 2f
2F is prime

Как сгенерировать набор простых чисел?

Сгенерировать множество чисел и оставить только простые среди них.
Для генерирования последовательностей удобно использовать seq.

# начальная и конечная точки
AQUO=10000
ADQUEM=10100
for N in $(seq $AQUO $ADQUEM); do
# в десятичную форму преобразуем с помощью bc
openssl prime $N | awk '/is prime/ {print "ibase=16;"$1}' | bc
done

Случайные данные

Как генерировать случайные данные?

Используйте подкоманду rand.

# Выдать 128 случайных байтов, закодированных в base64 на стандартный поток вывода
openssl rand -base64 128

# Записать 1024 случайных байта в файл
openssl rand -out random-data.bin 1024

# Инициализировать генератор случайныхх чисел полуслучайными данными из кэша браузера
cd $(find ~/.mozilla/firefox -type d -name Cache)
openssl rand -rand $(find . -type f -printf '%f:') -base64 1024

На UNIX/Linux-системах, в которых есть файл /dev/urandom, похожего эффекта
можно добиться иначе, и иногда с лучшим результатом даже:

# взять 32 символа из /dev/urandom и закодировать их в base64
head -c 32 /dev/urandom | openssl enc -base64

Между устройствами random и urandom есть разница.
Дополнительная информация в random(4) для Linux и BSD или random(7D) для Solaris.

S/MIME

S/MIME — стандарт для получения и отправки безопасных MIME-данных,
в особенности, почтовых сообщений.
Большинство почтовых клиентов умеет работать с такими сообщениями сами,
но для этого же можно использовать и openssl smime.

Много хороших примеров есть в smime(1).

Как проверить подписанное сообщение S/MIME?

Проверить, сохранённое в файле msg.txt подписанное сообщение:

openssl smime -verify -in msg.txt

Если сертификат отправителя подписан сервером сертификатов, которому доверяет
инсталляция OpenSSL, будут показаны заголовки сообщения, копия сообщения
и заключительная строка «Verification successful».

Если сообщение было изменено, в выводе будет содержаться сообщение о том,
что подпись или дайджест (контрольная сумма) не соответствуют действительности:

Verification failure
23016:error:21071065:PKCS7 routines:PKCS7_signatureVerify:digest
failure:pk7_doit.c:804:
23016:error:21075069:PKCS7 routines:PKCS7_verify:signature
failure:pk7_smime.c:265:

Если сертификат не опознан, возникнет похожая ошибка:

Verification failure
9544:error:21075075:PKCS7 routines:PKCS7_verify:certificate verify
error:pk7_smime.c:222:Verify error:self signed certificate

Большинство почтовых клиентов отправляют копию открытого сертификата
прикреплёнными к сообщению. Данные сертификата можно посмотреть из командной строки.
Используется хитрая комбинация подкоманд smime -pk7out и pkcs7.
Немного странно на первый взгляд, но работает!

openssl smime -pk7out -in msg.txt | 
openssl pkcs7 -text -noout -print_certs

Если нужно вытащить сертификат автора письма,
для того, чтобы использовать его в дальнейшем,
то нужна только первая часть команды:

openssl smime -pk7out -in msg.txt -out her-cert.pem

Дальше этот сертификат можно или интегрировать в инфраструктуру OpenSSL,
или сохранить его для будущего использования, например, такого:

openssl smime -verify -in msg.txt -CAfile /path/to/her-cert.pem

Как зашифровать сообщение S/MIME?

Допустим, кто-то прислал вам свой сертификат, которым попросил шифровать сообщения ему.
Сертификат сохранён в her-cert.pem. Ответ сохранен в файле my-message.txt.

Для того чтобы получить шифрование по умолчанию RC2-40 (оно, правда, слабое),
нужно только сказать ‘openssl, где находится сертификат:

openssl smime her-cert.pem -encrypt -in my-message.txt

Если есть уверенность, что на удалённой стороне есть современная поддержка SSL,
можно использовать алгоритм шифрования посильнее чем DES:

openssl smime her-cert.pem -encrypt -des3 -in my-message.txt

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

openssl smime her-cert.pem 
-encrypt 
-des3 
-in my-message.txt 
-from 'Your Fullname <you@youraddress.com>' 
-to 'Her Fullname <her@heraddress.com>' 
-subject 'My encrypted reply' |
sendmail her@heraddress.com

Как подписать сообщение S/MIME?

Подписать (но не шифровать) сообщение своим собственным
сертификатом, так чтобы получатель имел возможность
убедиться, кто является истинным автором.

openssl smime 
  -sign 
  -signer /path/to/your-cert.pem 
  -in my-message.txt 
  -from 'Your Fullname <you@youraddress.com>' 
  -to 'Her Fullname <her@heraddress.com>' 
  -subject 'My signed reply' |
sendmail her@heraddress.com

Подключение сертифицированного СКЗИ Рутокен ЭЦП к OpenSSL

http://forum.rutoken.ru/topic/1639/

Дополнительная информация

  • openssl.org (англ.) — домашний сайт проекта
  • Использование OpenSSL (рус.), Всеволод Стахов — большая статья, посвящённая использованию OpenSSL
  • OpenSSL demystified (англ.) — несколько дополнительных примеров использования OpenSSL и родственных инструментов
 Просмотр этого шаблона Криптография на Xgu.ru
Основы Криптография ciphrdsk.gif
AAA Kerberos  • EAP  • Host-based аутентификация в OpenSSH
Шифрование данных на диске Шифрование LVM  • LUKS
Шифрование сетевых данных VPN  • IPsec  • OpenVPN  • SSL  • OpenSSL  • TLS  • SSH
Криптография в VoIP Шифрование звонков в Asterisk • SRTP

Примечания

  1. ↑ http://www.madboa.com/geek/openssl/

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Error 1772 there is a problem with this windows installer package
  • Error 1762 lenovo
  • Error 176 amd radeon
  • Error 1753 there are no more endpoints available from the endpoint mapper
  • Error 17311 severity 16 state 1

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии