0

我花了很多时间在网上寻找解决方案,但是,唉,所以我最终得出结论,这可能是一个有趣的话题。

这是任务:

1. 我需要建立从 MAC OS X(最好是内置 IPSec 客户端)到远程 Cisco ASA 5500 的 VPN 连接。

2. 我有什么:两张证书,一张用于VPN连接密码,一张用于远程桌面登录。它们都存储在 eToken 上。

问题在于建立连接:在cisco官方网站上有关于支持的vpn客户端的评论,并且mac os x内置的IPSec客户端似乎是合适的。此外,对于 ASA 5500,它适用于“l2tp over ipsec”和“Cisco IPSec”模式。现在,让我们尝试建立“Cisco IPSec”(设置>网络>添加连接)。我有主机地址、账户名和密码,而且我确定它是正确的,因为我在 Win7 中检查过。

最有趣的是“身份验证设置”:在这里,我应该选择一个证书,但我的钥匙串报告说,我的钥匙串中没有合适的证书。

其原因可能在于证书的“类型”。我拥有的所有证书都被 OS X 识别为用户证书,因此它不能用于授权机器(顺便说一句,对吗?)。

好的,如果我们尝试通过 IPSec 的 l2tp 存在同样的问题:我什至可以从 eToken 中选择用户证书,但我仍然没有机器证书

这是它通常在 Windows 中的样子

  1. 运行 Cisco VPN 客户端

  2. 设置主机地址,而不仅仅是选择证书(允许以某种方式选择:))

  3. 点击连接,输入 eToken 的 pin 即可连接

那么在以下情况下如何建立连接:

1. 即使对于本地 IPsec 客户端,eToken 的证书也非常明显。

2. 另一端有一个cisco asa 5500。

或者我会很高兴获得提示或链接,我可以在其中找到有关 cisco vpn 功能的任何描述...

系统:OS X Lion 10.7.4,eToken SafeNet Authentication Client 8.0。

如果有人知道不同客户的决定 - 很高兴在这里看到它。

预先感谢!

4

1 回答 1

2

证书颁发机构通过 OpenSSL 进行管理,目前驻留在服务器 497398 (appdr.Company.com) 上。

CA 目录结构在 /etc/pki/CA/

OpenSSL 配置文件位于 /etc/pki/tls/openssl.cnf

openssl.cnf 文件中最重要的配置条目是以下行:

subjectAltName = DNS:primary-vpn.Company.com,DNS:backup-vpn.Company.com

此行需要 = 符号周围的空格。

如果客户选择添加另一个防火墙设备,则需要在另一个 DNS 中使用该 FQDN 更新此行:必须重新创建条目和所有密钥并将其重新发布给用户。

DFW 和 ORD 中客户帐户上的防火墙设置为通过使用证书以及用户名/密码的两阶段身份验证进行身份验证。

我们正在使用我们在 CA 上生成并分发给客户端的证书。每个防火墙还需要它自己的 PFX 格式证书以及 PEM 格式 CA 证书的副本。防火墙设备的 PFX 证书不得包含 CA 证书。CA 证书必须以 PEM 格式单独导入防火墙!此 CA 证书成为防火墙上的信任点。

防火墙还包括在设备本身上设置的基本用户名/密码身份验证。

防火墙证书密钥密码与设备本身一起记录在密码注释中。

客户端需要连接到每个防火墙的 DNS 名称,并且它必须(截至 2013 年 5 月 31 日)是 primary-vpn.Company.com 或 backup-vpn.Company.com。不支持通过 IP 地址进行连接,因为证书不包含 IP 地址的 subjectAltName。这是为了支持任何未来的 IP 更改,而无需重新键入所有客户端和设备。

每个用户都需要使用 openssl 和 CA 密钥生成单独的密钥和证书。CA 密钥密码记录在密码说明中的设备 497398 (appdr) 下。

您将需要 CA 密钥密码用于下面的证书创建过程(openssl ca ...)


如何添加新用户...

在 ca 服务器上:

  • 切换到 OpenSSL CA 目录

    cd /etc/pki/CA

  • 生成密钥

    openssl genrsa 2048 -out > username.Companyvpn.key

  • 产生企业社会责任

    openssl req -new -key username.Companyvpn.key -out username.Companyvpn.csr (OU = username) (Common Name = username) (无密码)

  • 生成证书 openssl ca -policy policy_anything -out username.Companyvpn.crt -infiles username.Companyvpn.csr(是签署证书)

  • 生成新的随机密码(12 个字符) echo</dev/urandom tr -dc 'a-zA-Z0-9'| head -c12

  • 制作 PFX 证书/密钥存档 openssl pkcs12 -export -out username.Companyvpn.pfx -inkey username.Companyvpn.key -in username.Companyvpn.crt -certfile /etc/pki/CA/certs/CompanyCA.crt (输入随机密码你刚刚生成)

  • 使用此命令验证证书 openssl x509 -in username.Companyvpn.crt -text -noout

  • 看保质期,应该是一年。

  • 还要寻找这条线:
  • X509v3 主题备用名称
  • 如果您没有看到主题备用名称行——停止——openssl.cnf 文件可能有问题!!
  • 联系更高级别的管理员寻求帮助

  • 通过将新的 PFX 文件附加到客户票证并为他们提供密码来分发新的 PFX 文件。

    如何创建设备证书/密钥...

    在 ca 服务器上:

    • 切换到 OpenSSL CA 目录 cd /etc/pki/CA

    • 为固件设备本身生成密钥 openssl genrsa 1024 > backup-vpn.Company.com.key

    • 为 FW 设备本身生成 CSR openssl req -new -key backup-vpn.Company.com.key -out backup-vpn.Company.com.csr(OU 是 Kimbia 证书)(通用名称 backup-vpn.Company.com)(没有密码)

    • 从 CSR 为 FW 设备生成证书 openssl ca -days 3650 -in backup-vpn.Company.com.csr -out backup-vpn.Company.com.crt

    • 为固件设备制作 PFX(无捆绑 CA 证书)openssl pkcs12 -export -out backup-vpn.Company.com.pfx -inkey backup-vpn.Company.com.key -in backup-vpn.Company.com.crt(使用'rack' 用于导出密码或生成随机密码)

    • Base64 编码 PFX 存档以供 NetSec 包含在 ASA 上,因为 Cisco 设备需要此 openssl base64 -in backup-vpn.Company.com.pfx -out backup-vpn.Company.com.pfx.b64

    • 将 Base64 编码的 PFX 存档分发给 NetSec 团队

    • 将 PEM 编码的 /etc/pki/CA/certs/CompanyCA.crt 分发给 NetSec 团队

    天堂禁止,如果您必须重新生成 CA 证书和密钥,这里是过程......

    • 将目录更改为 CA cd /etc/pki/CA

    • 生成密钥 openssl genrsa -out /etc/pki/CA/private/CompanyCA.key -des3 2048

    • 生成证书 openssl req -new -x509 -key /etc/pki/CA/private/CompanyCA.key -days 3650 > /etc/pki/CA/certs/CompanyCA.crt

    • 您现在必须重新生成所有设备密钥和证书,重新配置所有设备,并根据上述说明重新生成所有用户密钥和证书。

    • 我们已经为 2023 年设置了当前 CA/设备集的到期时间,以尽量避免必须重新执行此操作。

    要撤销特定证书并禁用用户...

    在 ca 服务器上:

    • 将目录更改为 CA cd /etc/pki/CA

    • 撤销证书 openssl ca -revoke username.Companyvpn.crt

    • 让 NetSec 从防火墙中删除用户名和隧道组条目。

    这是截至 2013 年 5 月 31 日的当前 /etc/pki/tls/openssl.cnf

    #
    # OpenSSL example configuration file.
    # This is mostly being used for generation of certificate requests.
    #
    
    # This definition stops the following lines choking if HOME isn't
    # defined.
    HOME            = .
    RANDFILE        = $ENV::HOME/.rnd
    
    # Extra OBJECT IDENTIFIER info:
    #oid_file       = $ENV::HOME/.oid
    oid_section     = new_oids
    
    # To use this configuration file with the "-extfile" option of the
    # "openssl x509" utility, name here the section containing the
    # X.509v3 extensions to use:
    
    #extensions     = v3_req,v3_ca
    
    # (Alternatively, use a configuration file that has only
    # X.509v3 extensions in its main [= default] section.)
    
    [ new_oids ]
    
    # We can add new OIDs in here for use by 'ca', 'req' and 'ts'.
    # Add a simple OID like this:
    # testoid1=1.2.3.4
    # Or use config file substitution like this:
    # testoid2=${testoid1}.5.6
    
    # Policies used by the TSA examples.
    tsa_policy1 = 1.2.3.4.1
    tsa_policy2 = 1.2.3.4.5.6
    tsa_policy3 = 1.2.3.4.5.7
    
    ####################################################################
    [ ca ]
    default_ca  = CA_default        # The default ca section
    
    ####################################################################
    [ CA_default ]
    
    dir     = /etc/pki/CA       # Where everything is kept
    certs       = $dir/certs        # Where the issued certs are kept
    crl_dir     = $dir/crl      # Where the issued crl are kept
    database    = $dir/index.txt    # database index file.
    #unique_subject = no            # Set to 'no' to allow creation of
                        # several ctificates with same subject.
    new_certs_dir   = $dir/newcerts     # default place for new certs.
    
    certificate = $certs/CompanyCA.crt  # The CA certificate
    serial      = $dir/serial       # The current serial number
    crlnumber   = $dir/crlnumber    # the current crl number
                        # must be commented out to leave a V1 CRL
    crl     = $dir/crl.pem      # The current CRL
    private_key = $dir/private/CompanyCA.key # The private key
    RANDFILE    = $dir/private/.rand    # private random number file
    
    x509_extensions = usr_cert      # The extentions to add to the cert
    
    # Comment out the following two lines for the "traditional"
    # (and highly broken) format.
    name_opt    = ca_default        # Subject Name options
    cert_opt    = ca_default        # Certificate field options
    
    # Extension copying option: use with caution.
    # copy_extensions = copy
    
    # Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
    # so this is commented out by default to leave a V1 CRL.
    # crlnumber must also be commented out to leave a V1 CRL.
    # crl_extensions    = crl_ext
    
    default_days    = 365           # how long to certify for
    default_crl_days= 30            # how long before next CRL
    default_md  = default       # use public key default MD
    preserve    = no            # keep passed DN ordering
    
    # A few difference way of specifying how similar the request should look
    # For type CA, the listed attributes must be the same, and the optional
    # and supplied fields are just that :-)
    policy      = policy_match
    
    # For the CA policy
    [ policy_match ]
    countryName     = match
    stateOrProvinceName = match
    organizationName    = match
    organizationalUnitName  = optional
    commonName      = supplied
    emailAddress        = optional
    
    # For the 'anything' policy
    # At this point in time, you must list all acceptable 'object'
    # types.
    [ policy_anything ]
    countryName     = optional
    stateOrProvinceName = optional
    localityName        = optional
    organizationName    = optional
    organizationalUnitName  = optional
    commonName      = supplied
    emailAddress        = optional
    
    ####################################################################
    [ req ]
    default_bits        = 2048
    default_md      = sha1
    default_keyfile     = privkey.pem
    distinguished_name  = req_distinguished_name
    attributes      = req_attributes
    x509_extensions = v3_ca # The extentions to add to the self signed cert
    
    # Passwords for private keys if not present they will be prompted for
    # input_password = secret
    # output_password = secret
    
    # This sets a mask for permitted string types. There are several options. 
    # default: PrintableString, T61String, BMPString.
    # pkix   : PrintableString, BMPString (PKIX recommendation before 2004)
    # utf8only: only UTF8Strings (PKIX recommendation after 2004).
    # nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
    # MASK:XXXX a literal mask value.
    # WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings.
    string_mask = utf8only
    
    req_extensions = v3_req # The extensions to add to a certificate request
    
    [ req_distinguished_name ]
    countryName         = Country Name (2 letter code)
    countryName_default     = US
    countryName_min         = 2
    countryName_max         = 2
    
    stateOrProvinceName     = State or Province Name (full name)
    stateOrProvinceName_default = Texas
    
    localityName            = Locality Name (eg, city)
    localityName_default    = AmericanCity
    
    0.organizationName      = Organization Name (eg, company)
    0.organizationName_default  = Software Company Inc
    
    # we can do this but it is not needed normally :-)
    #1.organizationName     = Second Organization Name (eg, company)
    #1.organizationName_default = World Wide Web Pty Ltd
    
    organizationalUnitName      = Organizational Unit Name (eg, section)
    #organizationalUnitName_default = Software Company Certificate
    
    commonName          = Common Name (eg, your name or your server\'s hostname)
    commonName_max          = 64
    
    emailAddress            = Email Address
    emailAddress_max        = 64
    
    # SET-ex3           = SET extension number 3
    
    [ req_attributes ]
    challengePassword       = A challenge password
    challengePassword_min       = 4
    challengePassword_max       = 20
    
    unstructuredName        = An optional company name
    
    [ usr_cert ]
    
    # These extensions are added when 'ca' signs a request.
    
    # This goes against PKIX guidelines but some CAs do it and some software
    # requires this to avoid interpreting an end user certificate as a CA.
    
    basicConstraints=CA:FALSE
    
    # Here are some examples of the usage of nsCertType. If it is omitted
    # the certificate can be used for anything *except* object signing.
    
    # This is OK for an SSL server.
    # nsCertType            = server
    
    # For an object signing certificate this would be used.
    # nsCertType = objsign
    
    # For normal client use this is typical
    # nsCertType = client, email
    
    # and for everything including object signing:
    # nsCertType = client, email, objsign
    
    # This is typical in keyUsage for a client certificate.
    # keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    
    # This will be displayed in Netscape's comment listbox.
    nsComment           = "OpenSSL Generated Certificate"
    
    # PKIX recommendations harmless if included in all certificates.
    subjectKeyIdentifier=hash
    authorityKeyIdentifier=keyid,issuer
    
    # This stuff is for subjectAltName and issuerAltname.
    # Import the email address.
    # subjectAltName=email:copy
    # An alternative to produce certificates that aren't
    # deprecated according to PKIX.
    # subjectAltName=email:move
    
    # Copy subject details
    # issuerAltName=issuer:copy
    
    #nsCaRevocationUrl      = http://www.domain.dom/ca-crl.pem
    #nsBaseUrl
    #nsRevocationUrl
    #nsRenewalUrl
    #nsCaPolicyUrl
    #nsSslServerName
    
    # This is required for TSA certificates.
    # extendedKeyUsage = critical,timeStamping
    
    subjectAltName = DNS:primary-vpn.Company.com,DNS:backup-vpn.Company.com
    
    [ v3_req ]
    
    # Extensions to add to a certificate request
    
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    
    #subjectAltName = DNS:primary-vpn.Company.com
    #subjectAltName = IP:122.123.321.221
    
    #subjectAltName=IP:221.321.123.122,DNS:backup-vpn.Company.com
    #subjectAltName=IP:122.123.321.221,DNS:primary-vpn.Company.com
    # Changing from IP+DNS to just DNS to mitigate future IP change issues
    # Added quotes 130530-07939
    
    
    [ v3_ca ]
    
    
    # Extensions for a typical CA
    
    
    # PKIX recommendation.
    
    subjectKeyIdentifier=hash
    
    authorityKeyIdentifier=keyid:always,issuer
    
    # This is what PKIX recommends but some broken software chokes on critical
    # extensions.
    #basicConstraints = critical,CA:true
    # So we do this instead.
    basicConstraints = CA:true
    
    # Key usage: this is typical for a CA certificate. However since it will
    # prevent it being used as an test self-signed certificate it is best
    # left out by default.
    # keyUsage = cRLSign, keyCertSign
    
    # Some might want this also
    # nsCertType = sslCA, emailCA
    
    # Include email address in subject alt name: another PKIX recommendation
    # subjectAltName=email:copy
    # Copy issuer details
    # issuerAltName=issuer:copy
    
    # DER hex encoding of an extension: beware experts only!
    # obj=DER:02:03
    # Where 'obj' is a standard or added object
    # You can even override a supported extension:
    # basicConstraints= critical, DER:30:03:01:01:FF
    
    subjectAltName = DNS:primary-vpn.Company.com,DNS:backup-vpn.Company.com
    
    [ crl_ext ]
    
    # CRL extensions.
    # Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
    
    # issuerAltName=issuer:copy
    authorityKeyIdentifier=keyid:always
    
    [ proxy_cert_ext ]
    # These extensions should be added when creating a proxy certificate
    
    # This goes against PKIX guidelines but some CAs do it and some software
    # requires this to avoid interpreting an end user certificate as a CA.
    
    basicConstraints=CA:FALSE
    
    # Here are some examples of the usage of nsCertType. If it is omitted
    # the certificate can be used for anything *except* object signing.
    
    # This is OK for an SSL server.
    # nsCertType            = server
    
    # For an object signing certificate this would be used.
    # nsCertType = objsign
    
    # For normal client use this is typical
    # nsCertType = client, email
    
    # and for everything including object signing:
    # nsCertType = client, email, objsign
    
    # This is typical in keyUsage for a client certificate.
    # keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    
    # This will be displayed in Netscape's comment listbox.
    nsComment           = "OpenSSL Generated Certificate"
    
    # PKIX recommendations harmless if included in all certificates.
    subjectKeyIdentifier=hash
    authorityKeyIdentifier=keyid,issuer
    
    
    ###################################################
    ###################################################
    
    ###Change the subjectAltName per DC####
    
    # This stuff is for subjectAltName and issuerAltname.
    # Import the email address.
    # subjectAltName=email:copy
    
    # MOVED THIS UNDER [ v3_req ] above
    ##
    #subjectAltName=IP:221.321.123.122,DNS:backup-vpn.Company.com
    #subjectAltName=IP:122.123.321.221,DNS:primary-vpn.Company.com
    # Changing from IP+DNS to just DNS to mitigate future IP change issues
    #subjectAltName="DNS:primary-vpn.Company.com"
    
    
    #####################################################
    #####################################################
    
    # An alternative to produce certificates that aren't
    # deprecated according to PKIX.
    # subjectAltName=email:move
    
    # Copy subject details
    # issuerAltName=issuer:copy
    
    #nsCaRevocationUrl      = http://www.domain.dom/ca-crl.pem
    #nsBaseUrl
    #nsRevocationUrl
    #nsRenewalUrl
    #nsCaPolicyUrl
    #nsSslServerName
    
    # This really needs to be in place for it to be a proxy certificate.
    proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo
    
    ####################################################################
    [ tsa ]
    
    default_tsa = tsa_config1   # the default TSA section
    
    [ tsa_config1 ]
    
    # These are used by the TSA reply generation only.
    dir     = ./demoCA      # TSA root directory
    serial      = $dir/tsaserial    # The current serial number (mandatory)
    crypto_device   = builtin       # OpenSSL engine to use for signing
    signer_cert = $dir/tsacert.pem  # The TSA signing certificate
                        # (optional)
    certs       = $dir/cacert.pem   # Certificate chain to include in reply
                        # (optional)
    signer_key  = $dir/private/tsakey.pem # The TSA private key (optional)
    
    default_policy  = tsa_policy1       # Policy if request did not specify it
                        # (optional)
    other_policies  = tsa_policy2, tsa_policy3  # acceptable policies (optional)
    digests     = md5, sha1     # Acceptable message digests (mandatory)
    accuracy    = secs:1, millisecs:500, microsecs:100  # (optional)
    clock_precision_digits  = 0 # number of digits after dot. (optional)
    ordering        = yes   # Is ordering defined for timestamps?
                    # (optional, default: no)
    tsa_name        = yes   # Must the TSA name be included in the reply?
                    # (optional, default: no)
    ess_cert_id_chain   = no    # Must the ESS cert id chain be included?
                    # (optional, default: no)
    
于 2012-09-17T16:11:11.527 回答