Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
DESCRIÇÃO BREVE
Explica como assinar scripts para que eles estejam em conformidade com as políticas de execução do PowerShell.
DESCRIÇÃO LONGA
A política de execução restrita não permite a execução de nenhum script. As políticas de execução AllSigned e RemoteSigned impedem que o PowerShell execute scripts que não tenham uma assinatura digital.
Este tópico explica como executar scripts selecionados que não são assinados, mesmo quando a política de execução é RemoteSigned, e como assinar scripts para seu próprio uso.
Para obter mais informações sobre políticas de execução do PowerShell, consulte about_Execution_Policies.
PARA PERMITIR QUE SCRIPTS ASSINADOS SEJAM EXECUTADOS
Quando você inicia o PowerShell em um computador pela primeira vez, a política de execução restrita (o padrão) provavelmente estará em vigor.
A política restrita não permite a execução de scripts.
Para localizar a política de execução efetiva em seu computador, digite:
Get-ExecutionPolicy
Para executar scripts não assinados que você escreve em seu computador local e scripts assinados de outros usuários, inicie o PowerShell com a opção Executar como Administrador e use o seguinte comando para alterar a política de execução no computador para RemoteSigned:
Set-ExecutionPolicy RemoteSigned
Para obter mais informações, consulte o tópico de ajuda do cmdlet Set-ExecutionPolicy.
EXECUTANDO SCRIPTS NÃO ASSINADOS (POLÍTICA DE EXECUÇÃO REMOTAASSINADA)
Se a política de execução do PowerShell for RemoteSigned, o Windows PowerShell não executará scripts não assinados baixados da Internet, incluindo scripts não assinados recebidos por email e programas de mensagens instantâneas.
Se você tentar executar um script baixado, o PowerShell exibirá a seguinte mensagem de erro:
The file <file-name> cannot be loaded. The file <file-name> is not digitally
signed. The script will not execute on the system. Please see "Get-Help
about_Signing" for more details.
Antes de executar o script, examine o código para ter certeza de que você confia nele. Os scripts têm o mesmo efeito que qualquer programa executável.
Para executar um script não assinado, use o cmdlet Unblock-File ou use o procedimento a seguir.
- Salve o arquivo de script em seu computador.
- Clique em Iniciar, clique em Meu Computador e localize o arquivo de script salvo.
- Clique com o botão direito do mouse no arquivo de script e clique em Propriedades.
- Clique em Desbloquear.
Se um script que foi baixado da Internet for assinado digitalmente, mas você ainda não tiver optado por confiar em seu editor, o PowerShell exibirá a seguinte mensagem:
Do you want to run software from this untrusted publisher?
The file <file-name> is published by CN=<publisher-name>. This
publisher is not trusted on your system. Only run scripts
from trusted publishers.
[V] Never run [D] Do not run [R] Run once [A] Always run
[?] Help (default is "D"):
Se você confia no editor, selecione "Executar uma vez" ou "Sempre executar". Se você não confia no editor, selecione "Nunca executar" ou "Não executar". Se você selecionar "Nunca executar" ou "Sempre executar", o PowerShell não solicitará novamente para este editor.
MÉTODOS DE ASSINATURA DE SCRIPTS
Você pode assinar os scripts que você escreve e os scripts que você obtém de outras fontes. Antes de assinar qualquer script, examine cada comando para verificar se é seguro executá-lo.
Para obter as práticas recomendadas sobre assinatura de código, consulte Code-Signing Práticas recomendadas.
Para obter mais informações sobre como assinar um arquivo de script, consulte Set-AuthenticodeSignature.
O New-SelfSignedCertificate cmdlet, introduzido no módulo PKI no PowerShell 3.0, cria um certificado autoassinado que é apropriado para teste. Para obter mais informações, consulte o tópico de ajuda do cmdlet New-SelfSignedCertificate.
Para adicionar uma assinatura digital a um script, você deve assiná-la com um certificado de assinatura de código. Dois tipos de certificados são adequados para assinar um arquivo de script:
Certificados criados por uma autoridade de certificação: por uma taxa, uma autoridade de certificação pública verifica sua identidade e fornece um certificado de assinatura de código. Quando você compra seu certificado de uma autoridade de certificação respeitável, é possível compartilhar seu script com usuários em outros computadores que executam o Windows porque esses outros computadores confiam na autoridade de certificação.
Certificados criados: você pode criar um certificado autoassinado para o qual o computador é a autoridade que cria o certificado. Esse certificado é gratuito e permite que você escreva, assine e execute scripts em seu computador. No entanto, um script assinado por um certificado autoassinado não será executado em outros computadores.
Normalmente, você usaria um certificado autoassinado apenas para assinar scripts escritos para seu próprio uso e para assinar scripts obtidos de outras fontes que você verificou serem seguros. Não é apropriado para scripts que serão compartilhados, mesmo dentro de uma empresa.
Se você criar um certificado autoassinado, habilite a proteção de chave privada forte no certificado. Isso impede que programas mal-intencionados assinam scripts em seu nome. As instruções são incluídas no final deste tópico.
CRIAR UM CERTIFICADO SELF-SIGNED
Para criar um certificado autoassinado, use o cmdlet New-SelfSignedCertificate no módulo PKI. Este módulo é introduzido no PowerShell 3.0 e está incluído no Windows 8 e no Windows Server 2012. Para obter mais informações, consulte o tópico de ajuda do cmdlet New-SelfSignedCertificate.
Para criar um certificado autoassinado em versões anteriores do Windows, use a ferramenta Criação de Certificado (MakeCert.exe). Essa ferramenta está incluída no SDK do Microsoft .NET Framework (versões 1.1 e posteriores) e no SDK do Microsoft Windows.
Para obter mais informações sobre a sintaxe e as descrições de parâmetros da ferramenta MakeCert.exe, consulte Ferramenta de criação de certificado (MakeCert.exe).
Para usar a ferramenta MakeCert.exe para criar um certificado, execute os comandos a seguir em uma janela do Prompt de Comando do SDK.
Observação: O primeiro comando cria uma autoridade de certificação local para o computador. O segundo comando gera um certificado pessoal da autoridade de certificação.
Nota: Você pode copiar ou digitar os comandos exatamente como eles aparecem. Nenhuma substituição é necessária, embora você possa alterar o nome do certificado.
makecert -n "CN=PowerShell Local Certificate Root" -a sha1 `
-eku 1.3.6.1.5.5.7.3.3 -r -sv root.pvk root.cer `
-ss Root -sr localMachine
makecert -pe -n "CN=PowerShell User" -ss MY -a sha1 `
-eku 1.3.6.1.5.5.7.3.3 -iv root.pvk -ic root.cer
A ferramenta MakeCert.exe solicitará uma senha de chave privada. A senha garante que ninguém possa usar ou acessar o certificado sem o seu consentimento. Crie e insira uma senha que você possa lembrar. Você usará essa senha posteriormente para recuperar o certificado.
Para verificar se o certificado foi gerado corretamente, use o comando a seguir para obter o certificado no repositório de certificados do computador. (Você não encontrará um arquivo de certificado no diretório do sistema de arquivos.)
No prompt do PowerShell, digite o seguinte:
Get-ChildItem cert:\CurrentUser\my -codesigning
Esse comando usa o provedor de Certificados do PowerShell para exibir informações sobre o certificado.
Se o certificado tiver sido criado, a saída mostrará a impressão digital que identifica o certificado em uma exibição semelhante à seguinte:
Directory: Microsoft.PowerShell.Security\Certificate::CurrentUser\My
Thumbprint Subject
---------- -------
4D4917CB140714BA5B81B96E0B18AAF2C4564FDF CN=PowerShell User ]
ASSINAR UM SCRIPT
Depois de criar um certificado autoassinado, você pode assinar scripts. Se você usar a política de execução AllSigned, assinar um script permitirá que você execute o script em seu computador.
O script de exemplo a seguir, Add-Signature.ps1, assina um script. No entanto, se você estiver usando a política de execução AllSigned, deverá assinar o script Add-Signature.ps1 antes de executá-lo.
Para usar esse script, copie o texto a seguir em um arquivo de texto e nomeie-o Add-Signature.ps1.
## Signs a file
param([string] $file=$(throw "Please specify a filename."))
$cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]
Set-AuthenticodeSignature $file $cert
Para assinar o arquivo de script Add-Signature.ps1, digite os seguintes comandos no prompt de comando do PowerShell:
$cert = @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]
Set-AuthenticodeSignature add-signature.ps1 $cert
Depois que o script for assinado, você poderá executá-lo no computador local. No entanto, o script não será executado em computadores nos quais a política de execução do PowerShell exija uma assinatura digital de uma autoridade confiável. Se você tentar, o PowerShell exibirá a seguinte mensagem de erro:
The file C:\remote_file.ps1 cannot be loaded. The signature of the
certificate cannot be verified.
At line:1 char:15
+ .\ remote_file.ps1 <<<<
Se o PowerShell exibir essa mensagem quando você executar um script que não foi escrito, trate o arquivo como trataria qualquer script não assinado. Examine o código para determinar se você pode confiar no script.
HABILITAR PROTEÇÃO DE CHAVE PRIVADA FORTE PARA SEU CERTIFICADO
Se você tiver um certificado privado em seu computador, programas mal-intencionados poderão assinar scripts em seu nome, o que autoriza o PowerShell a executá-los.
Para evitar a assinatura automatizada em seu nome, use o Gerenciador de Certificados (Certmgr.exe) para exportar seu certificado de assinatura para um arquivo .pfx. O Gerenciador de Certificados está incluído no SDK do Microsoft .NET Framework, no SDK do Microsoft Windows e no Internet Explorer 5.0 e versões posteriores.
Para exportar o certificado:
- Inicie o Gerenciador de Certificados.
- Selecione o certificado emitido pela Autoridade de Certificação Local do PowerShell.
- Clique em Exportar para iniciar o Assistente de Exportação de Certificado.
- Selecione "Sim, exportar a chave privada" e clique em Avançar.
- Selecione "Ativar proteção forte".
- Digite uma senha e digite-a novamente para confirmar.
- Digite um nome de arquivo que tenha a extensão de nome de arquivo .pfx.
- Clique em Concluir.
Para importar novamente o certificado:
- Inicie o Gerenciador de Certificados.
- Clique em Importar para iniciar o Assistente de Importação de Certificado.
- Abra no local do arquivo .pfx que você criou durante o processo de exportação.
- Na página Senha, selecione "Ativar proteção de chave privada forte" e insira a senha que você atribuiu durante o processo de exportação.
- Selecione o repositório de certificados pessoais.
- Clique em Concluir.
IMPEDIR QUE A ASSINATURA EXPIRE
A assinatura digital em um script é válida até que o certificado de autenticação expire ou desde que um servidor de carimbo de data/hora possa verificar se o script foi assinado enquanto o certificado de autenticação era válido.
Como a maioria dos certificados de assinatura são válidos apenas por um ano, usar um servidor de carimbo de data/hora garante que os usuários possam usar seu script por muitos anos.